父组件如何监听子组件的生命周期?

比如有父组件 Parent 和子组件 Child,如果父组件监听到子组件挂载 mounted 就做一些逻辑处理,可以通过以下写法实现:

1 // Parent.vue
2 <Child @mounted="doSomething"/>
3 
4 // Child.vue
5 mounted() {
6   this.$emit("mounted");
7 }

 以上需要手动通过 $emit 触发父组件的事件,更简单的方式可以在父组件引用子组件时通过 @hook 来监听即可,如下所示:

 1 //  Parent.vue
 2 <Child @hook:mounted="doSomething" ></Child>
 3 
 4 doSomething() {
 5    console.log('父组件监听到 mounted 钩子函数 ...');
 6 },
 7 
 8 //  Child.vue
 9 mounted(){
10    console.log('子组件触发 mounted 钩子函数 ...');
11 },    
12 
13 // 以上输出顺序为:
14 // 子组件触发 mounted 钩子函数 ...
15 // 父组件监听到 mounted 钩子函数 ...

 当然 @hook 方法不仅仅是可以监听 mounted,其它的生命周期事件,例如:created,updated 等都可以监听。

 

posted @ 2020-07-15 20:31  云来云往  阅读(990)  评论(0编辑  收藏  举报