钩子函数分为生命周期钩子和路由守卫钩子
生命周期钩子:
beforeCreate(){ console.log('组件实例化之前') }, created(){ console.log('组件实例化完毕,单页面还未显示') }, beforeMount(){ console.log('组件挂载前,页面仍未展示,但虚拟Dom已经配置') }, mounted(){ console.log('组件挂在后,此方法执行后,页面显示') }, beforeUpdate(){ console.log('组件更新前,页面仍未更新,但虚拟Dom已经配置') }, updated(){ console.log('组件更新,此方法执行后,页面显示') }, beforeDestroy(){ console.log('组件销毁前') }, destroyed(){ console.log('组件销毁') },
路由守卫钩子:
全局守卫:router.beforeEach , router.beforeResolve , router.afterEach
路由独享守卫 :beforeEnter
组件内的守卫 :beforeRouteEnter , beforeRouteUpdate , beforeRouteleave
路由导航解析流程:
- 导航被触发。
- 在失活的组件里调用离开守卫。
- 调用全局的
beforeEach
守卫。 - 在重用的组件里调用
beforeRouteUpdate
守卫 (2.2+)。 - 在路由配置里调用
beforeEnter
。 - 解析异步路由组件。
- 在被激活的组件里调用
beforeRouteEnter
。 - 调用全局的
beforeResolve
守卫 (2.5+)。 - 导航被确认。
- 调用全局的
afterEach
钩子。 - 触发 DOM 更新。
- 用创建好的实例调用
beforeRouteEnter
守卫中传给next
的回调函数。