分为: 全局的、耽搁路由独享的、组件级的
全局路由守卫
- 全局前置守卫
router.beforeEach
- 全局解析守卫
router.beforeResolve
- 全局后置钩子
router.afterEach
全局前置守卫
可以使用 router.beforeEach 注册一个全局前置守卫:
每个守卫方法接收三个参数:
- to: Route: 即将要进入的目标路由对象
- from: Route: 当前导航正要离开的路由
- next: Function: 钩子函数,里面定义参数,确认下一步路由要做什么
next(’/’)或者 next({ path: ‘/’ }): 跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航。你可以向 next 传递任意位置对象,next({name: ‘home’}) 。
一般应用在用户未能验证身份时重定向到 /login :
路由独享的守卫
可以在路由配置上直接定义 beforeEnter 守卫:
组件内的守卫
可以在路由组件内直接定义以下路由导航守卫:
- 进组组件前的守卫
beforeRouteEnter
- 路由更新时的守卫
beforeRouteUpdate
(2.2 新增) - 离开组件时的守卫
beforeRouteLeave
完整的导航解析流程
- 导