实现页面跳转到详情再跳转回来时,页面缓存,可使用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>
GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891 Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐