本文介绍: 对于后台管理系统,数据的展示形式大多都是通过表格,常常会出现的一种场景,从表格跳到二级页面,再返回上一页时,需要缓存当前的页码和滚动条的位置,以为使用keep-alive就能实现这两种诉求,实际开发的时候,才发现。keep-alive组件是不会缓存滚动位置的。在二次封装的列表组件中,监听。先使用keep-alive。生命周期,设置表格的滚动条。
背景
对于后台管理系统,数据的展示形式大多都是通过表格,常常会出现的一种场景,从表格跳到二级页面,再返回上一页时,需要缓存当前的页码和滚动条的位置,以为使用keep-alive就能实现这两种诉求,实际开发的时候,才发现 keep-alive组件是不会缓存滚动位置的。
实现table缓存滚动条
<template>
<el-main>
<router-view v-slot="{ Component, route }">
<transition appear name="fade-transform" mode="out-in">
<keep-alive :include="keepAliveStore.keepAliveName">
<component :is="Component" :key="route.path" v-if="isRouterShow" />
</keep-alive>
</transition>
</router-view>
</el-main>
</template>
在二次封装的列表组件中,监听 activated 和 deactivated 生命周期,设置表格的滚动条
// 实现element table缓存滚动位置
const tableRef = ref<InstanceType<typeof ElTable>>(); // 表格的实例
const scrollPosition = ref<number | null>(null); // 记录滚动条的位置
// 页面激活时
onActivated(() => {
if (scrollPosition.value) {
nextTick(() => {
// 设置表格的滚动条位置
tableRef.value?.scrollBarRef.setScrollTop(scrollPosition.value);
scrollPosition.value = null;
});
}
});
// 页面离开时
onDeactivated(() => {
nextTick(() => {
// 记录滚动条的位置
scrollPosition.value = tableRef.value?.scrollBarRef.wrapRef.scrollTop;
});
});
呈现的效果:
~~ END ~~
原文地址:https://blog.csdn.net/weixin_45313351/article/details/134641593
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_518.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。