vue-router的生命周期
beforeEach 进入新路由之前执行
beforeResolve
afterEach 进入新路由之后执行
beforeRouteEnter 进入组件之前被调用
beforeRouteUpdate 不同路由组件被重复使用的时候被调用
beforeRouteLeave 离开该组件的时候被调用
-
路由守卫
- beforeEach,路由前置守卫,有三个参数,to,form,next
- beforeResolve,解析守卫,没有next参数
- afterEach,后置守卫
-
组件内路由守卫
- beforeRouteEnter,在导航确认前被调用,因此即将登场的新组件还没被创建,不能访问this,可以传一个回调给next来访问组件的实例,在导航被确认的时候执行回调,并且把组件实例作为回调方法的参数。
- beforeRouteUpdate,在当前路由改变,但是该组件被复用时调用,this已经可以使用了,所以不支持传递回调
- beforeRouteLeave,导航离开该组件的对应路由时调用,通常用来禁止用户还未保存修改前突然离开。该导航可通过next(false)来取消
-
路由独享守卫
beforeEnter,可以在路由配置上直接定义beforeEnter守卫 -
完整的导航解析流程
- 导航被触发
- 在失活的组件里调用beforeRouteLeave守卫
- 调用全局的beforeEach守卫
- 在重用的组件里 beforeRouteUpdate 守卫
- 在路由配置里调用 beforeEnter 守卫
- 解析异步路由组件
- 在被激活的组件里调用 beforeRouteEnter 守卫
- 调用全局的 beforeResolve 守卫
- 导航被确认
- 调用全局的 afterEach 组件
- 触发DOM更新