在 Vue3 中,生命周期钩子是理解组件状态变化的关键。这些钩子允许你在组件的不同阶段执行自定义逻辑。每个生命周期钩子都有其特定的作用和使用场景。下面将详细介绍 Vue3 中的生命周期钩子。
创建与初始化阶段
beforeCreate
beforeCreate
钩子在实例创建完成后立即调用,但此时数据观测(data observer)和事件配置还没有开始。这意味着你不能访问到 data 或者 methods 中的数据。
------ ------- - -------------- - -------------------------- ----------- - -
created
created
钩子在实例创建完成后被调用。此时数据观测(data observer)已经完成,属性和方法的运算已经完成,但是挂载阶段还没开始,$el 属性目前不可见。
------ ------- - --------- - --------------------- ---------------- - -
挂载阶段
beforeMount
beforeMount
钩子在挂载开始之前被调用。相关的 render 函数首次被调用。
------ ------- - ------------- - ------------------------- --------- - -
mounted
mounted
钩子在挂载完成后被调用。这时,el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。如果 root 实例挂载了一个文档内的元素,当 mounted 被调用时 vm.$el 也在文档内。
------ ------- - --------- - --------------------- -------- - -
更新阶段
beforeUpdate
beforeUpdate
钩子在数据更新时调用,发生在虚拟 DOM 打补丁之前。此时可以获取更新前的 DOM。
------ ------- - -------------- - -------------------------- -------- - -
updated
updated
钩子在由于数据更改导致的虚拟 DOM 重新渲染和打补丁之后调用。注意,此钩子可能在初始渲染时不被调用(即 mounted
之后)。
------ ------- - --------- - --------------------- -------- - -
销毁阶段
beforeUnmount
beforeUnmount
钩子在卸载组件实例之前调用。在这个阶段,实例仍然是完全正常的。
------ ------- - --------------- - --------------------------- ------- - -
unmounted
unmounted
钩子在组件实例销毁后调用。调用此钩子时,组件实例的所有指令都被解绑,所有事件监听器被移除,所有子组件实例也被销毁。
------ ------- - ----------- - ----------------------- -------- - -
错误处理阶段
errorCaptured
errorCaptured
钩子提供一个捕获子组件错误的机会。它会被父组件用来捕获来自任何子组件的错误。
------ ------- - ------------------ --- ----- - --------------------------- ------ ---- ------ - -
其他钩子
activated
activated
钩子在 keep-alive 组件激活时调用。这通常用于需要在组件激活时执行某些操作的场景。
------ ------- - ----------- - ----------------------- ---------- -------- - -
deactivated
deactivated
钩子在 keep-alive 组件停用时调用。
------ ------- - ------------- - ------------------------- ---------- -------- - -
serverPrefetch
serverPrefetch
钩子在服务器端渲染期间被调用,以便预先获取数据。
------ ------- - ----- ---------------- - ----- ----------------- ---------------------------- ---------- - -
以上就是 Vue3 的生命周期钩子的详细说明。通过合理地利用这些钩子,你可以更好地控制组件的行为和状态,从而构建出更加健壮和高效的前端应用。