路由钩子
参数:
to: 即将进入路由的 route 信息
from: 离开路由的 route 信息
next: 继续执行的函数,没有 next() 的此钩子 会彻底 阻止你 进入下一个路由
如果你需要在访问不同路由时候去获取 离开页面 或 者即将进入页面 的动态数据,那么这个地方是个好地方。
例子:
router.beforeEach((to, from, next) => {
console.log(to)
console.log(from)
if (to.meta.request) {
console.log(1)
let token = localStorage.getItem('token')
if (token) {
console.log(2)
// if (Object.keys(from.query).length === 0) {//判断路由来源是否有query,处理不是目的跳转的情况
// next()
// } else {
// let redirect = from.query.redirect//如果来源路由有query
// if (to.path === redirect) {//这行是解决next无限循环的问题
// next()
// } else {
// next({ path: redirect })//跳转到目的路由
// }
// }
next()
} else {
router.push({ name: "login" })
}
} else {
next()
}
})