路由缓存配置
在路由配置中为列表页启用keepAlive缓存,并在入口文件动态包裹<keep-alive>组件。需在路由元信息中设置keepAlive: true,并通过v-if条件渲染控制缓存逻辑
1
3。例如:
javascript
Copy Code
// router.js
{
path: '/product-list',
component: ProductList,
meta: { keepAlive: true } // 启用缓存
}
滚动位置记录与恢复
监听滚动事件:在列表页的mounted或activated钩子中绑定滚动监听,实时保存scrollTop值至组件数据
1
2。
恢复位置:在activated钩子中使用$nextTick确保DOM更新后,通过scrollTo方法恢复位置
1
4。示例:
javascript
Copy Code
activated() {
this.$nextTick(() => {
this.$refs.scrollContainer.scrollTo(0, this.scrollTop);
});
}
页面来源区分
通过路由守卫beforeRouteEnter判断是否从详情页返回,避免非预期场景下恢复滚动位置
1
2。例如:
javascript
Copy Code
beforeRouteEnter(to, from, next) {
next(vm => {
vm.isBackFromDetail = (from.name === 'product-detail');
});
}
备选方案
Vue Router原生支持:通过scrollBehavior函数自动恢复浏览器历史记录的滚动位置,适合简单场景
5。
状态管理存储:结合Vuex或Pinia存储滚动位置,适用于复杂路由场景
3
4。
注意事项
需确保滚动容器设置正确的ref引用
1
4
移动端需考虑滚动穿透问题,可搭配better-scroll等库优化
6
动态路由需配合key属性或路由参数变化监听实现精准控制
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69921466/viewspace-3102028/ ,如需转载,请注明出处,否则将追究法律责任。