vue.js - 通过 vue-router 导航时组件的生命周期钩子的优先级是什么
问题描述
我注意到从起点导航到终点时created
,目标组件的钩子发生在起点的钩子之前。beforeDestroy
假设我们有这个路由器:
const router = new VueRouter({
routes: [
{ path: '/foo', component: Foo },
{ path: '/bar', component: Bar }
],
})
从 导航到时,组件的生命周期钩子( beforeCreate
, created
, beforeMount
, mounted
, activated
, deactivated
, beforeDestroy
, )的实际优先级是多少?destroyed
/foo
/bar
结合导航守卫(beforeRouteLeave
, beforeEach
, beforeRouteUpdate
, beforeEnter
beforeRouteEnter
, beforeResolve
, afterEach
)的完整导航流程是什么?
解决方案
根据这个小提琴Foo
,这是从到导航时生命周期挂钩的优先级Bar
:
Bar
:beforeCreate
Bar
:created
Bar
:beforeMount
Foo
:beforeDestroy
Foo
:destroyed
Bar
:mounted
以下是完整的导航流程:
- 出身:
beforeRouteLeave
守卫。 - 全局:
beforeEach
守卫。 - 目的地:
beforeEnter
守卫。 - 目的地:
beforeRouteEnter
守卫。 - 全局:
beforeResolve
守卫。 - 全局:
afterEach
守卫。 - 目的地:
beforeCreate
生命周期钩子。 - 目的地:
created
生命周期钩子。 - 目的地:
beforeMount
生命周期钩子。 - 目的地:回调传递给
next
守卫beforeRouteEnter
。 - 来源:
beforeDestroy
生命周期钩子。 - 来源:
destroyed
生命周期钩子。 - 目的地:
mounted
生命周期钩子。
使用时keep-alive
:
- ...
- 目的地:回调传递给
next
守卫beforeRouteEnter
。 - 来源:
deactivated
生命周期钩子。 - 目的地:
mounted
生命周期钩子。 - 目的地:
activated
生命周期钩子。
推荐阅读
- python-3.x - 为 Telcom 生成 summpy 数据集的问题
- javascript - 在页面加载时在 html 页面上加载内容
- powershell - 在公共组织单位中创建多个用户
- c++ - eccodes 在使用不同的工具时会产生不同的结果
- android - 如何在scrollChange事件上获取android水平滚动视图的第一个可见子项
- python - 张量流和条件精度
- java - eclipse 存储环境变量的地方
- javascript - 使用单选按钮显示/隐藏具有相同类的多个 DIV
- mysql - 如何获得 MariaDB 的当前值?
- assembly - 组装测验 - 阶段 6