在router-link跳转之前如何获取当前页面的scrollTop

需求:从产品列表页进入产品详情页,然后当页面返回时还是列表页的内容和页面位置(页面不需要重新加载);
做法:在点击产品进行组件渲染详情页时获取scrollTop,然后等页面返回再进行window.scrollTo(x,y);操作,但是我发现绑定点击事件时取到的scrollTop=0;(此时详情页已经渲染了,所以列表页的scroll值就丢失了),所以大家是怎么做的,我刚刚接触vue,好多东西不是很清晰!

阅读 4.3k
2 个回答

可以参考:https://router.vuejs.org/zh-c...
默认情况下,点击返回滚动条位置是会保持在原来位置的,不用去设置吧。
或者你可以用导航钩子:
router.beforeEach((to, from, next) => {//路由变化前执行的函数

document.getElementsByTagName('body')[0].scrollTop

}

看你的描述,其实并不需要获取scrollTop,只要在vue-router中加入以下代码就可以满足你的需求

scrollBehavior: function(to, from, savedPosition){
    if (savedPosition) {
      return savedPosition
    }
}

可参考:滚动行为

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题