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

一、通过 $emit 实现

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

// Parent.vue
<Child @mounted="doSomething"/>
    
// Child.vue
mounted() {
  this.$emit("mounted");
}

以上方法虽然可行,但每次都需要手动写一次 $emit 触发父组件的事件
更简单的方式可以在父组件引用子组件时通过 @hook 来监听生命周期

二、通过 @hook 实现

还是父组件 Parent 和子组件 Child,@hook 的写法如下:

//  Parent.vue
<Child @hook:mounted="doSomething" ></Child>

doSomething() {
   console.log('父组件监听到 mounted 钩子函数 ...');
},
    
//  Child.vue
mounted(){
   console.log('子组件触发 mounted 钩子函数 ...');
},    
    
// 以上输出顺序为:
// 子组件触发 mounted 钩子函数 ...
// 父组件监听到 mounted 钩子函数 ...     

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

posted @ 2020-09-15 21:22  Leophen  阅读(1013)  评论(0编辑  收藏  举报