vue-router scrollBehavior无效的问题及解决方案

问题

在使用vue-router做导航路由时,发现每个页面打开都在原来的位置不能返回到页面顶部位置,然后查看API文档,滚动行为如下:


const router = new VueRouter({
    routes: [...],
    scrollBehavior(to, from, savedPosition) {
        // return 期望滚动到哪个的位置
        if (savedPosition) {
            return savedPosition
        } else {
            return {
                x: 0,
                y: 0
            }
        }
    }
})

添加路由中后发现没有实际效果。。。

解决方案:检查您使用的路由版本,在vue-router4+版本scrollBehavior为了使其返回更像JS API,将其返回的对象调整与ScrollToOptions类似:x改名为left,y改名为top

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: scrollBehaviorvue-router中的一个方法,用于设置在路由切换时页面滚动行为。它接收三个参数,to表示即将跳转到的路由对象,from表示当前所在的路由对象,savedPosition会在使用前进或后退按钮切换路由时被记录下来,如果该参数存在,则表示用户使用了浏览器的前进或后退功能,可以使用该参数将页面恢复到之前滚动的位置。如果返回false或空对象,则不会发生任何滚动行为。 ### 回答2: vue-router中的scrollBehavior是用来控制页面切换时滚动行为的。它可以被用来定制页面切换时的滚动位置。 scrollBehavior是一个被注册在全局路由对象或每个路由配置中的函数。它接收三个参数:to(即将进入的目标路由对象),from(当前导航正要离开的路由对象)和savedPosition(之前导航时保存的滚动位置)。 scrollBehavior函数需要返回一个包含滚动位置的坐标对象,或一个选择器字符串,或者是一个锚点指令。如果返回导航对象,会回到default行为。 我们可以利用scrollBehavior来定制滚动位置。比如,如果我们想让页面每次切换都回到顶部,我们可以在scrollBehavior中返回{x: 0, y: 0}来指定滚动位置为顶部。 另外,我们还可以根据不同的路由配置定制不同的滚动位置。我们可以通过检查to和from的路由对象来决定返回的滚动位置。例如,如果我们想在某个特定的路由中,每次切换都滚动至底部,我们可以在scrollBehavior中检查to的路由对象,如果是特定的路由,返回{x: 0, y: document.documentElement.scrollHeight}。 总的来说,scrollBehavior可以让我们自定义页面切换时的滚动行为,根据需求来控制滚动位置,使用户体验更加友好。 ### 回答3: scrollBehavior是Vue Router中的一个配置选项,用于控制路由切换时页面滚动的行为。它可以通过设置一个函数来定制滚动行为,该函数会在路由切换时被调用。 这个函数接收三个参数:to(要进入的目标路由对象)、from(当前导航正要离开的路由对象)和savedPosition(点击历史记录返回时的位置信息)。我们可以利用这些参数来决定页面如何滚动。 函数需要返回一个包含滚动位置信息的对象,可以有以下属性: 1. x:横向滚动位置,默认为0; 2. y:纵向滚动位置,默认为0; 3. behavior:滚动行为,默认为auto,可选值有auto、smooth。 举个例子来说,如果我们希望路由切换后页面滚动到顶部,可以在scrollBehavior函数中返回{ x: 0, y: 0 }。如果我们希望切换后页面滚动到之前保存的位置,可以通过读取savedPosition参数来实现。 另外,我们也可以根据路由对象的不同属性来设置不同的滚动行为。比如,我们可以根据目标路由和源路由的路径来实现更精确的滚动行为。 总之,scrollBehavior功能强大,可以根据具体需求来定制页面滚动的行为,使页面切换更加平滑和符合用户预期。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值