vue3路由跳转后页面显示在上个页面滚动到的位置

问题描述

vue3路由跳转后页面显示在上个页面滚动到的位置

原因

vue中的路由跳转是不同组件的显示,尤其是我们在一个公共框架组件下的子组件,很有可能会存在页面显示位置有记忆的问题,vue-router官方文档给出了解决方案,链接如下:
https://router.vuejs.org/zh/guide/advanced/scroll-behavior.html

解决方案

在这里插入图片描述
在创建路由实例的时候添加scrollBehavior(滚动行为)函数,其接受三个参数,to和from路由对象以及savePosition,savePosition通俗来说就是对位置的记忆,且只有为popstate导航(浏览器前进后退按钮触发)才可用。简单使用的代码如下:

const router = createRouter({
	history: createWebHistory(baseUrl),
	routes: [...],
	scrollBehavior(to, from, savedPosition) {
		if (savedPosition) {
			return savedPosition;
		} else {
			return { top: 0 };
		}
	},
})

这样,我们在vue项目中的页面跳转就像普通网页一样每次跳转都会在页面顶部,而通过导航栏 的前进后退按钮导航时会回到页面滚动到的位置。

欢迎小伙伴们留言交流。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值