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