在某些情况下,开发者需要在父组件中了解一个子组件何时被创建、挂载或更新。
你可能也在自己的组件中遇到并解决过类似问题,比如,通过在子组件的生命周期钩子中 emit 一个事件,像这样:
mounted() { this.$emit("mounted"); }
然后就可以在父组件中监听到:
<Child @mounted="doSomething"/>
如果只是单纯的这样 emit 并监听,让我来告诉你吧:大可不必。
可以取而代之的办法是,只需要加上前缀 @hook:
来监听相应的生命周期钩子函数就可以了。
这个解决方法也适用于第三方组件。
比如,如果你要在第三方组件 v-runtime-template
渲染时监听其 updated
钩子,像这样就行:
<v-runtime-template @hook:updated="doSomething" :template="template" />