认识
2023年06月10日
一、认识
Hook Event
是 Vue
的自定义事件结合生命周期钩子实现的一种从组件外部为组件注入额外生命周期方法的功能。
<template>
<div class="wrapper">
<comp @hook:mounted="hookMounted" />
</div>
</template>
<script>
// 这就是上面的那个第三方业务组件
import Comp from '@/components/Comp.vue'
export default {
components: {
Comp
},
methods: {
hookMounted() {
console.log('loading ...')
}
}
}
</script>
Hook Event
实现过程如下:
-
处理组件自定义事件的时候(
vm.$on
) 如果发现组件有hook:xx
格式的事件(xx
为Vue
的生命周期函数),则将vm._hasHookEvent
置为true
,表示该组件有Hook Event
-
在组件生命周期方法被触发的时候,内部会通过
callHook
方法来执行这些生命周期函数,在生命周期函数执行之后,如果发现vm._hasHookEvent
为true
,则表示当前组件有Hook Event
,通过vm.$emit('hook:xx')
触发Hook Event
的执行