0705
还是nuxt框架的相关问题,我现在处于的版本是v1.0.0-alpha.4,在列表页加载很多数据后用户点击进入到详情页,并在此回退返回到列表页时,nuxt框架中会在详情页先执行 scrollTop更新的代码,再返回到列表页中,造成列表页的scrollTop位置不能正确触发。
起初怀疑nuxt的route并没有记录到这个scorllTop值,多次测试后发现已经记录,断点调试时发现,route在详情页面就直接更新scrollTop而没有等到进入列表页时再更新scrollTop。
怀疑是fetch周期导致的等待数据,组件没有及时切换过来,造成的此问题。
依据:做过类似测试,当我处于详情页面时,点击详情页面的路由跳转到其他页面再次回到详情页面时route所呈现的scrollTop是正确的。详情页和列表页最主要的差异就是,列表页我做了fetch周期去更新store,详情页仅仅在asyncData做了异步请求,所以怀疑是fetch实现时影响了route的切换。
等不到作者优化nuxt,也没有自己修改底层的实力,所以想了个新办法,在需要记录scrollTop值的组件中,在beforeDestroy周期将当前scrollTop值存入store中,并在每个组件mounted周期去重置为scrollTop的位置。
beforeDestroy(){
this.$store.commit('article/setScrollTop',{scrollTop:$(window).scrollTop()})
},
mounted(){
window.scrollTo(0,this.currentScrollTop)
}
- 项目相关
地址:m.gulugulu.cn (手机端)
框架: nuxt