Vue路由器返回按钮导致错误的savedPosition

nbnkbykc  于 2023-05-18  发布在  Vue.js
关注(0)|答案(1)|浏览(206)

我用vue-router(4.0.13)编写了一个vue 3应用程序。当我在任何页面上向下滚动一点,然后点击一个按钮到另一个路由,然后点击返回按钮,路由器引导我到一个略有不同的位置比我以前。但是路由器应该回到原来的位置。
我的路由器配置:

const router = createRouter({
  history: createWebHistory(process.env.BASE_URL),
  routes,
  scrollBehavior(to, from, savedPosition) {
    if (savedPosition) {
      return savedPosition
    } else {
      return { top: 0, behavior: 'instant' }
    }
  }
})

当我删除部分“else {return { top:0,行为:'instant' }}",则后退按钮行为正常工作。
有什么问题吗?这里是我的应用程序的链接:https://www.test.timetip.app/

7qhs6swi

7qhs6swi1#

我遇到了同样的问题,按下浏览器后退按钮是要到一个不同的滚动位置在页面上比预期。在我的例子中,这是因为我使用vue路由器导航卫士beforeEach来启用占位符组件,以防下一条路由没有完全加载(延迟加载)。不幸的是,beforeEach在vue路由器计算并保存您要离开的页面的滚动位置之前运行,所以它正在计算包括占位符在内的页面的滚动位置。
一般来说,这种行为可能是由于在vue路由器保存滚动位置之前运行的javascript添加或删除的html的任何部分造成的。

相关问题