求教大神能否实现页面前进请求数据,后退不请求数据,展示之前请求过的数据,包括滚动到跳转前页面的位置,网上铺天盖地的keep-alive方案在移动端会出现各种bug,不行,pc端试没问题。
需求是记录上次页面点的位置,包括分页列表滑动到的位置,tab等
求教大神能否实现页面前进请求数据,后退不请求数据,展示之前请求过的数据,包括滚动到跳转前页面的位置,网上铺天盖地的keep-alive方案在移动端会出现各种bug,不行,pc端试没问题。
需求是记录上次页面点的位置,包括分页列表滑动到的位置,tab等
我keep-alive都用了好几个项目了 也没出现啥 bug啊。。。。
我觉得项目用keep-alive 的话 要注意几个问题把
https://github.com/vuejs/vue-...
我的解决方案是路由只是用2级,但是为了url看起来比较好看,url表现出来的是三级
优点的话 就是能保存页面状态,就我的项目而言
像是一些首页啊、分类页面啊、个人中心页面等等 这种只用请求一个次的页面 请求事件放在created里面就行
关于楼主说的列表到详情,我一般的做法是把请求函数放在beforeRouteEnter里面,
然后根据条件判断是否要重新加载第一页:
!list.length || from.name != 'xxxx'
(因为我的项目跑在微信浏览器里 所以做list判断是为了解决,如果用户在详情页刷新页面,然后返回到列表页,列表页是空的情况)
关于保存页面滚动位置,我遇到两种情况:
vue部分:
beforeRouteEnter(to, from, next) {
next(vm => {
if (!vm.hasLoadData) {
vm.getList()
}
if (vm.scrollTop && vm.$refs.scrollBody) {
vm.$refs.scrollBody.scrollTop = vm.scrollTop // 设置滚动位置
}
})
},
beforeRouteLeave(to, from, next) {
this.scrollTop = this.$refs.scrollBody.scrollTop // 保存滚动位置
next()
},
data() {
return {
scrollTop: 0, // 页面滚动条位置
}
},
html:
...
<div ref="scrollBody"><!--这个是滚动容器 height: 100vh; overflow-y: auto; -->
这里是列表内容
</div>
...
以上,如果有啥问题,大家多讨论讨论
13 回答12.7k 阅读
7 回答1.8k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
6 回答775 阅读✓ 已解决
2 回答1.9k 阅读
6 回答1k 阅读
怎么判断是后退到该页面还是点击菜单到该页面,还是说只要非首次进入就不刷新