Vue3中自定义指令的生命周期发生了一些变化,大体上分为两类:钩子函数名称的变化和钩子函数参数的变化。
钩子函数名称的变化
Vue2中自定义指令有五个生命周期钩子函数:bind、inserted、update、componentUpdated、unbind。在Vue3中,这些钩子函数的名称发生了改变:
- bind --> beforeMount
- inserted --> mounted
- update -->beforeUpdate
- componentUpdated – updated
- unbind -->unmounted
-钩子函数参数的变化
在Vue2中,自定义指令的生命周期钩子函数有两个参数:el和binding。在Vue3中,生命周期钩子函数的参数发生了一些变化:
- beforeMount和mounted:只有一个参数VNode
- beforeUpdate和updated:只有两个参数,VNode和prevNode
- unmounted:只有一个参数 VNode
其中,vnode表示虚拟节点,prevVnode表示更新前的虚拟节点。在beforeUpdate和updated这两个钩子函数中,可以通过比较vnode和prevVnode来判断指令绑定的属性是否被更新。
总的来说,Vue3中自定义指令生命周期的变化主要是为了与Vue3的组合式API更加契合,提高了代码的可读性和可维护性。