返回
轻松掌握 vue-router scrollBehavior,告别滚动难题!
前端
2024-01-11 10:35:03
使用前端路由时,当切换到新路由,你是否希望页面滚到顶部,或者保持原先的滚动位置,就像重新加载页面那样?vue-router 中的 scrollBehavior 方法可以轻松实现此功能。
vue-router scrollBehavior 使用指南
- 安装 vue-router
npm install vue-router
- 创建 Router 实例
import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
const routes = [
{
path: '/',
component: Home
},
{
path: '/about',
component: About
}
]
const router = new VueRouter({
routes
})
- 使用 scrollBehavior 方法
router.scrollBehavior = (to, from, savedPosition) => {
// 当切换到新路由时,页面滚到顶部
if (to.path !== from.path) {
return { x: 0, y: 0 }
}
// 保持原先的滚动位置
if (savedPosition) {
return savedPosition
}
// 默认情况下,页面滚到顶部
return { x: 0, y: 0 }
}
vue-router scrollBehavior 使用无效的解决方案
如果你在使用 scrollBehavior 方法时遇到问题,可以尝试以下解决方案:
- 确保在创建 Router 实例时使用了 scrollBehavior 方法
const router = new VueRouter({
routes,
scrollBehavior
})
- 确保 scrollBehavior 方法返回一个对象
router.scrollBehavior = () => {
return { x: 0, y: 0 }
}
- 确保 scrollBehavior 方法中的对象具有 x 和 y 属性
router.scrollBehavior = () => {
return {
x: 0,
y: 0
}
}
- 确保 scrollBehavior 方法中的 x 和 y 属性都是数字
router.scrollBehavior = () => {
return {
x: 0,
y: 0
}
}
- 确保 scrollBehavior 方法中的 x 和 y 属性都是非负整数
router.scrollBehavior = () => {
return {
x: 0,
y: 0
}
}
- 确保 scrollBehavior 方法中的 x 和 y 属性都是小于或等于页面滚动高度的整数
router.scrollBehavior = () => {
return {
x: 0,
y: 0
}
}