关于vue-router中scrollBehavior方法滚动行为的使用

17 篇文章 0 订阅
好处

当切换到新路由时,想要页面滚到顶部,或者是保持原先的滚动位置

scrollBehavior (to, from, savedPosition) {
   // return 期望滚动到哪个的位置
}

参数说明:
to, from都是路由对象;
savedPosition 当且仅当 popstate 导航 (通过浏览器的 前进/后退 按钮触发) 时才可用。

案例使用

场景:项目中经常会遇到异步请求接口数据,这些异步操作通常会放在created、mounted钩子里面
分析:通过在不同的生命周期钩子和scrollBehavior()使用console.log()打印顺序如下:

created钩子
mounted钩子
to参数: {***} from参数: {***}
异步请求数据:get data
打印位置信息 savedPosition {x: 0, y: 630}

可知:必须使用异步滚动,否则,请求的数据重新赋值,将导致页面重新渲染,因此利用setTimeout将回调事件放到队列中,且异步请求接口的回调事件优先进入队列,最后才是setTimeout的回调事件。

完整代码如下
const router = new Router({
  mode: 'history',
  routes: [...],
  scrollBehavior (to, from, savedPosition) {
    console.log('to: ', to)
    console.log('from: ', from)
    if (savedPosition) {
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          console.log('savedPosition', savedPosition)
          resolve(savedPosition)
        }, 500)
      })
    } else {
      return { x: 0, y: 0 }
    }
  }
})
  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值