vue-router 路由守卫/导航守卫
一. 什么是路由导航守卫?
路由的导航守卫 又叫做路由的钩子函数(生命周期函数)
就是在跳转页面的时候把路由拦下来 做一些操作 再放行
二. 路由导航守卫有几种?分别是什么?
- 全局守卫
beforeEach 路由进入之前
afterEach 进入之后
- 组件内守卫
beforeRouteEnter 进入之前
beforeRouteUpdate 更新之前
beforeRouteLeave 离开之前
- 独享守卫
beforeEnter 进入之前
三. 路由守卫的参数?
有三个参数:to from ,next
next 这个参数 在路由 3.x 版本的时候 是必须的
但是到了路由 4.x 版本的时候 next 参数变成可选的了
一般来说 :vue2 搭配 3.x 的路由
vue3 搭配 4.x 的路由
四. next的参数问题 ?
next 参数 除了括号里可以是空和路径之外 还可以是一个回调函数
(回调函数:一个被作为参数传递的函数)
比如说 token 被存进 vuex 里就可以这么写:
beforeRouteEnter(to, from, next) {
// if (localStorage.getItem("token")) {
// next();
// } else {
// next("/login");
// }
// 在这个组件路由守卫钩子函数中 没有this
// 因为组件实例还没有创建出来
next((vm) => {
// vm就是 这个组件实例 就是this
if (vm.$store.state.token) {
next();
} else {
next("/login");
}
});
},