Vue Router 记住页面滚动位置的简单实现

共 893字,需浏览 2分钟

 ·

2021-11-15 18:45

来源 | https://www.cnblogs.com/classlate/archive/2021/11/02/15501987.html

本质就是, 利用内置组件在页面组件得以被缓存的基础上, 再加以document.documentElement.scrollTop获取滚动距离, 后返回页面时恢复滚动距离
实现效果, 打开A页面, 滚动至a处, 切换至B页面, 返回A页面, 此时页面位置为a点而非顶部。

路由出口

 <div class="main">        <keep-alive>      <router-view>router-view>    keep-alive>  div>

页面组件

export default { data(){ scrollTop: 0, // 储存滚动位置 }, activated() { // 进入该组件后读取数据变量设置滚动位置 // 注意, 此处由页面是否具有 DTD (如: ``), 决定具体选择, 详见参考资料 document.documentElement.scrollTop = this.scrollTop; // document.body.scrollTop = this.scrollTop; }, beforeRouteLeave(to, from, next) { // 离开组件时保存滚动位置 // 注意, 此时需调用路由守卫`beforeRouterLeave`而非生命周期钩子`deactivated` // 因为, 此时利用`deactivated`获取的 DOM 信息已经是新页面得了 this.scrollTop = document.documentElement.scrollTop; next(); }, }


学习更多技能
请点击下方公众号

浏览 30
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报