今天为大家带来vue 实现切换组件 记录浏览位置的办法,也是新手最可以看懂的办法!!!
(如果解决了您的问题,请帮忙给我点个赞吧,谢谢!!!)
(PS:搞不懂为啥有人写文章就非少写几步,让别人跳坑!鄙视! 这样还不如不分享了!!!)
第一步:在你需要记录浏览位置的路由 用 keep-alive 包裹起来
<keep-alive>
<router-view :bottomnavh="bottomnavh1"></router-view>
</keep-alive>
第二步 : 在入口文件(main.js)中定于全局变量 ,并且挂载在实例上面 (直接复制)
let homeScrollTop = 0;
Vue.prototype.$homeScroll = homeScrollTop;
第三步 : 在你记录的页面加上下面两个函数
activated (){
//this.$nextTick()异步执行dom刷新
this.$nextTick(() => {
console.log(this.$homeScroll);
window.scrollTo(0, this.$homeScroll);
})
},
//离开路由时
beforeRouteLeave(to, from, next){
//alert(1)
console.log(to);
//全局变量homeScroll默认为0 离开页面时 记录当前的页面滚动值
this.$homeScroll = document.documentElement.scrollTop || document.body.scrollTop;
// console.log(this.$homeScroll)
//需要执行next函数 否则不起作用
next();
},
这样就达到效果了,是不是很简单呢!
注意 : 这里面有一个坑,就是:如果你在切换组件的时候有个 元素 需要 在 当前组件显示,切换的组件隐藏的话,一般情况下,我们习惯写在切换后的组件销毁的时候触发显示,但是你会发现销毁以后,你的当前组件中元素并没有显示出来,解决办法就是,你把这个触发的事件写在 你返回的按钮函数中就可以了!