【发布时间】:2018-08-03 18:39:23
【问题描述】:
假设我有一个 <router-view> 显示一个组件 (A),通过 <router-link> 这个组件将被另一个 (B) 替换。
这两个组件都有自己的 beforeCreate 和 beforeDestroy 挂钩。我希望如果我从 A 导航到 B,事件顺序将是:
-
A.beforeDestroy B.beforeCreate
但是在做了一些测试之后,它似乎完全相反:B.beforeCreate 总是被称为 before A.beforeDestroy。
正确吗?如果它是正确的,为什么会这样?对我来说没有意义...
在我的情况下,所有这些钩子都与一些常见数据交互,所以我在这里面临竞争条件......关于如何处理的任何建议?我需要在创建 B 之前完成一些在销毁 A 之前无法启动的事情......
【问题讨论】:
-
作为Vue Github for patch.js和VUe Github for lifecycle,Vue会先创建新的vnode,最后删除旧的vnode。您描述的问题,可能使用vue-router navigator 将是一种选择。