vue3设置页面缓存,详情页面跳转回来至之前的滚动条位置

实现页面跳转到详情再跳转回来时,页面缓存,可使用keep-alive组件,具体实现代码如下:

App.vue文件

<template>
  <div class="app-page">
    <!-- 路由出口 -->
    <router-view v-slot="{ Component }">
      <keep-alive
        :include="[
          'Monitor',
          'Mycollection',
          'Mywarning',
          userStore.cacheWarningPage ? 'Warningdata' : '',
        ]"
      >
        <component :is="Component" />
      </keep-alive>
    </router-view>
  </div>
</template>

在App.vue添加keep-alive,其中include数组中包含需要缓存的组件的name名称,注意是组件的name名称,不是路由router的name

Mywarning.vue文件

<template>
  <!-- 数据监控-我的预警页面 -->
  <div class="content" ref="contentRef">
    <div v-for="(item, index) in contentList" :key="index">
       <span @click="goToDetail(item.keywords)">
       	<el-icon><HelpFilled /></el-icon>
       	详情
       </span>
  	</div>
  </div>
</template>

<script setup>
import { ref, onMounted, defineOptions, onActivated } from "vue";
import { getMyWarning } from "../../../service/monitor";
import { HelpFilled } from "@element-plus/icons-vue";
import { useRouter } from "vue-router";
import { useUserStore } from "../../../stores";
const userStore = useUserStore();
const router = useRouter();

defineOptions({
  name: "Mywarning",
});
const contentRef = ref(); // 定义scroll的ref
const scrollTopVal = ref(0); // 定义跳转前的scrollTop值

onActivated(() => {
  contentRef.value.scrollTop = scrollTopVal.value; // 将存储的scrollTop值赋给scroll
});

// 内容区域部分
const contentList = ref([]);
// 获取我的预警页面信息列表
const getList = async () => {
  const data = { uid: userStore.userInfo.uid };
  try {
    const res = await getMyWarning(data);
    if (res.code == 200) {
      contentList.value = res.data;
    } else {
      contentList.value = [];
    }
  } catch (err) {
    console.log("err", err);
  }
};
onMounted(() => {
  getList();
});
// 详情跳转按钮
const goToDetail = (keywords) => {
  scrollTopVal.value = contentRef.value.scrollTop; // 将此时的scrollTop值保存下来
  router.push({
    path: "/home/monitor/warningdata",
    query: { k: keywords },
  });
};
</script>
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值