vue 实现切换组件 记录浏览位置

188 阅读1分钟

今天为大家带来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();

  },

这样就达到效果了,是不是很简单呢!

注意 :  这里面有一个坑,就是:如果你在切换组件的时候有个 元素 需要 在 当前组件显示,切换的组件隐藏的话,一般情况下,我们习惯写在切换后的组件销毁的时候触发显示,但是你会发现销毁以后,你的当前组件中元素并没有显示出来,解决办法就是,你把这个触发的事件写在 你返回的按钮函数中就可以了!