一,导航守卫分类:
全局守卫
全局前置守卫--- beforeEach
全局解析守卫 --- beforeResolve
全局后置守卫 --- afterEach
路由独享守卫
路由独享 beforeEnter
组件中的路由守卫
进入 beforeRouterEnter
更新 beforeRouterUpdata
离开 beforeRouterLeave
二,导航守卫完整的执行流程
路由A离开到路由B的情况下
触发路由A的beforeRouterLeave守卫
触发beforeEach 全局前置守卫
触发路由B中 beforeEnter 路由独享守卫(如果写了路由独享守卫就会在这个步骤触发,如果没写就不触发这个步骤)
触发B中的beforeRouterEnter守卫
触发beforeRsolve 全局解析守卫
触发 afterEach 全局后置守卫
路由A离开到路由A的情况
也就是当我们需要在页面中改变某一部分数据时,需要触发的流程(如:tab切换时)
触发 beforeEach 全局前置守卫
触发 beforeEnter 路由独享守卫(如果写了路由独享守卫就会在这个步骤触发,如果没写就不触发这个步骤)
触发组件中的beforeRouterUpdata 守卫(数据进行了修改)
触发beforeRsolve全局解析守卫
触发afterEach全局后置守卫
3.完整的导航解析流程:
导航被触发
在失活的组件里调用beforeRouteLeave守卫
调用全局前置守卫(beforeRouterEnter)
在重用的组件里调用beforeRouteUpdata守卫
在路由配置里调用beforeEnter
解析异步路由组件
在被激活的组件里面调用beforeRouteEnter
调用全局的beforeResolve守卫
导航被确认
调用全局的afterEach钩子
触发DOM更新
调用beforeRouteEnter守卫传给next的回调函数,创建好的组件实例会作为参数传入
以上内容是自己的总结,如果有错麻烦提醒提醒。