[vue-router4进阶] 4.滚动行为

如果一个页面特别长,用户已经进行了页面滚动,这时候跳转到了下一个页面,页面滚动应该怎么处理?
vue-router已经给我们提供了scrollBehavior来处理这个问题。
但是这个功能只在支持 history.pushState 的浏览器中可用。
不过也没关系,现代浏览器都是支持的。
scrollBehavior是在createRouter时传入的一个方法,比如我们要在跳转页面时,页面总是滚到顶部:

const router = createRouter({
  history: createWebHashHistory(),
  routes: [...],
  scrollBehavior (to, from, savedPosition) {
   return { top: 0 } // 表示页面滚到顶部
  }
})

它还有三个参数,to是新进入的页面route,from是前一个页面的route,savedPosition表示,如果是浏览器的后退/前进按钮触发的页面切换,这个值是之前这个页面滚动到的位置。
比如,要返回一个页面时,还滚动到这个页面原来的滚动的位置,像浏览器原生的表现那样:

const router = createRouter({
  scrollBehavior(to, from, savedPosition) {
    if (savedPosition) {
      return savedPosition
    } else {
      return { top: 0 }
    }
  },
})

scrollBehavior还有一些其他配置,我就不多介绍了,大家看官网的说明就行了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 导航守卫 vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。参数或查询的改变并不会触发进入...
    陈老板_阅读 621评论 0 1
  • Vue Router 是Vue.js[http://cn.vuejs.org/]官方的路由管理器。它和 Vue.j...
    SY阅读 783评论 0 0
  • 一、导航守卫 1.1、全局守卫 router.beforeEach 注册一个全局前置守卫: 当一个导航触发时,全局...
    范小饭_阅读 1,687评论 0 15
  • 导航守卫 导航表示路由正在发生改变。vue-router提供的导航守卫主要用来通过跳转或取消的方式守卫导航。有多种...
    oWSQo阅读 743评论 0 0
  • ![Flask](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAW...
    极客学院Wiki阅读 7,868评论 0 3

友情链接更多精彩内容