首页 > 其他 > 详细

Vue快速实现列表记忆功能

时间:2021-09-06 07:59:41      阅读:33      评论:0      收藏:0      [点我收藏+]

 

?技术点

 

1. 为需要开启列表记忆的路由开启keep-alive

2. vue-router的初始化中新增一个配置,scrollBehavior [1]


缺点:

仅在PC上使用较多,因为只有当页面滚动时才有效,如果在页面内某个元素滚动则无法监听到滚动的距离;

比如移动端常用的布局就无法监听(列表头+列表滚动)

// 1. 为需要开启列表记忆的路由开启keep-alive
// 常用操作就是在路由表的配置一个参数keepAlive
// 然后,在根页面App.vue里根据这个参数判断是否被keep-alive包裹

<keep-alive>
  <router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>

// 2.vue-router的初始化中新增一个配置,scrollBehavior
?
const router = new VueRouter({
  routes: [...],
  // savedPosition 当浏览器前进和后退时会记录页面X轴和Y轴滚动的距离
  scrollBehavior (to, from, savedPosition) {
    // 当这个值存在时,触发记忆(距离回滚)
    if(savedPosition) {
      return savedPosition
    }
    return { x:0, y:0 }
  }
})

 

通过上面这两步设置,可以解决大多数的场景。


如果有遇到复杂些的场景,也可以参考官方仓库中issue里给出的答案


https://github.com/vuejs/vue-router/issues/1459

https://github.com/vuejs/vue-router/issues/1187



[1] https://router.vuejs.org/zh/api/#scrollbehavior

 

 

同步微信公众号 [时不荒]

Vue快速实现列表记忆功能

原文:https://www.cnblogs.com/ViavaCos/p/15226008.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!