vue3设置页面缓存,详情页面跳转回来至之前的滚动条位置
vue
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
项目地址:https://gitcode.com/gh_mirrors/vu/vue
免费下载资源
·
实现页面跳转到详情再跳转回来时,页面缓存,可使用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 个月前
更多推荐
已为社区贡献2条内容
所有评论(0)