记录一下我在这个项目中使用的方法。有一个更简单方便的方法。欢迎交流说明:假设有一个bc页,从a页到b页,b页到c页,当b到c页时,需要记录b的当前浏览位置,当c回到b时,滚动到最后一个浏览位置。b返回到a,当从a进入b时,返回到b的顶部(即不记录浏览位置)。方法:使用vuex,beforeRouteLeave1。vuex中的state定义了一个变量来记录当前浏览位置//state中定义数据stateinstate:{car??rierTouScroll:{height:''//滚动距离}}//mutations操作state数据mutations:{setCarrerTouScroll(state,distance){//管理race滚动距离state.carrerTouScroll.height=disdance},}//使用getter,有的可以不用这句,但有时不行,所以我们加getter:{getCarrerTou:state=>state.carrerTouScroll}2.在需要的页面中,我在没有离开路线的情况下,使用beforeRouteLeave记录当前浏览位置beforeRouteLeave(to,from,next){//离开路线之前letthat=thisif(to.meta.touFlag){让scrollTop=window.pageYOffset||文档.documentElement.scrollTop||document.body.scrollTopthis.$store.commit('setCarrerTouScroll',scrollTop)}else{this.$store.commit('setCarrerTouScroll',0)}next()}其中to.meta.touFlag是我自己的我自己定义了,因为需要记录的页面比较多,我觉得比较方便,路由页面加个参数就可以了{path:'/careerAddMainTeam',name:'CareerAddMainTeam',component:CareerAddMainTeam,meta:{touFlag:true}},当然你也可以使用to.name,如果你需要跳转几页beforeRouteLeave(to,from,next){//在离开路由之前letthat=thisif(to.name==='CareerAddMainTeam'){letscrollTop=window.pageYOffset||文档.documentElement.scrollTop||document.body.scrollTopthis.$store.commit('setCarrerTouScroll',scrollTop)}else{this.$store.commit('setCarrerTouScroll',0)}next()},3.最后一步是使用$nextTickb页面每次获取数据将页面恢复到上次浏览的位置一定要拿到b页的数据后使用nextTick,否则没有作用,这次记录在这里。如果还有其他好的方法请指出
