比如有父组件 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 等都可以监听。