vue-router 提供的路由守卫主要用来通过跳转或取消的方式守卫路由,比如符合什么条件才可以进入路由,否则取消跳转,或者控制跳转路径,路由跳转成功过后需要做什么操作等等都可以使用路由守卫(路由钩子)实现,常用来做登录验证
/ 全局前置守卫,所有的路由在执行之前都会经过该守卫。
router.beforeEach((to, from, next) => {
/* 导航守卫 处理逻辑 */
})
-
to 表示在当前路由变化时,你进入哪个路由。
-
from 表示在当前路由变化时,你要离开哪个路由。
-
next 它是一个函数,你必须要调用这个next()来结束对当前的动作的处置。你可以根据自己的业务逻辑来决定使用如下三个中的某一个:
-
next() // 正常放行
-
next(false) // 不让跳,回去原来的页面
-
next(路由) 进入指定路由
-
next({path: , name:, ....})
-
next('/地址')
-
-
组件内的守卫
const Foo = {
template: `...`,
beforeRouteEnter(to, from, next) {
// 在渲染该组件的对应路由被 confirm 前调用
// 不!能!获取组件实例 `this`
// 因为当守卫执行前,组件实例还没被创建
},
beforeRouteUpdate(to, from, next) {