详细页返回列表保留原来滚动条所在位置
最近学校要求做个项目,在新闻列表页中向下滑动后,随别打开一个新闻,进入该新闻的详情页面,当看完后,从详情页返回到新闻列表页。而且滚动条也回到了最顶上的第 1 个新闻了。这样影响用户的体验效果。
解决这个问题需要用路由守卫
第一步我们要在 index.js 给需要缓存的新闻列表添加meta
属性用来缓存组件,代码如下:
复制代码
keepAlive
如果为 true 说明该组件需要缓存
第二步我们要在主入口文件 App.vue 添加keepAlive
标签 代码如下:
复制代码
通过 v-if 来判断,前面路由配置的 $route.meta.keepAlive 是否为 true,为 true 的话则会将组件进行缓存,所以我们要在新闻列表添加keepAlive
为 true
第三步我们要给新闻列表 news.vue 添加路由守卫
复制代码
我们要用到beforeRouteLeave
,和activated
beforeRouteLeave
守卫:即将离开该组件的路由是调用,三个参数:to 表示即将进入的目标路由对象,from 表示当前导航正要离开的路由对象,newt 是一个函数对象,next():进入管道中的下一个钩子,如果没有钩子则确认导航。
activated
钩子:该组件缓存后调用,没有使用缓存,也就是没有被<keep-alive>包裹的话,activated 是不起作用,
滚动条在那就在那添加 ref:listBox 属性 用来获取改标签的滚动条
评论