Vue Router 使用技巧
定制 scrollBehavior 滚动行为
有时我们希望每次路由跳转,都让指定的元素 scroll 到具体位置,这时候可以把代码放在此处。
例如,每次切换路由(用户点击了 RouterLink)始终将 #app 滚动到顶部:
// src/router/index.js
const router = createRouter({
scrollBehavior(to, from, savedPosition) {
/* 用户点击了 RouterLink 就立即将 #app 滚动到顶部 */
document.getElementById('app').scrollTo({ top: 0 });
/* 仅 Hash 模式下,且浏览器原生的前进/后退,才会将 #app 滚动到顶部 */
return { el: '#app', top: 0 }
},
})
注意体会二者差别。
若希望用 vue-router 提供的默认机制,首要前提是路由是在 hash 模式下,其次 scrollBehavior 里面虽然返回的是 scrollToOptions 对象,但会限制在浏览器前进后退时才可用。
相关文档:https://router.vuejs.org/zh/guide/advanced/scroll-behavior.html