问题背景:
在A页面中有一个无线下拉列表,点击某一个列表项,跳转到新的B页面;
在B返回到A的过程中,对A页面进行了keep-alive操作,也就是缓存了页面,A页面的数据都还在,没有产生新的http请求,但是滚动距离回到了顶部,不是之前浏览的位置。
我的做法如下:
1.在app.vue中根据条件保留了页面缓存。
2.在vue-router设置中保留页面滚动高度。尝
老版本的saveScrollPosition和2.0版本的scrollBehavior均无效。
.]
求解思路?
tips:
(在B页面返回到A页面的时候,我在A页面的updated钩子里面写了console.log('updated'));发现执行了updated生命周期。但是A页面的逻辑巨复杂,会是这个updated引起的吗
提供两种解决方案:
1.路由如果使用的是hash方式,手动记录滚动位置,可以是window或者有滚动条的DOM元素。
2.通过vue提供的history路由模式实现,这种方式简单,但是需要后端配合,对于已有项目来说,修改起来不方便。