Vue.js 的生命周期钩子是指在 Vue 实例的不同阶段会被调用的一组函数。这些钩子函数允许你在特定的生命周期阶段执行自定义的代码。
生命周期钩子的工作原理
-
实例化阶段:
创建 Vue 实例:当你创建一个 Vue 实例时,Vue 会按照特定的顺序执行生命周期钩子。这些钩子可以在 Vue 实例的不同生命周期阶段被调用,以帮助你在正确的时机执行特定的操作。
-
钩子函数的调用顺序:
Vue 会按照预定义的生命周期顺序依次调用钩子函数。这些钩子函数提供了在实例初始化、数据绑定、DOM 渲染、组件更新和销毁等阶段的操作机会。
常用的生命周期钩子
-
beforeCreate
:在实例初始化后,数据观测和事件/侦听器设置之前被调用。 -
created
:实例已经创建完成,数据观测、事件/侦听器设置完毕,但 DOM 尚未挂载。 -
beforeMount
:在挂载开始之前被调用,此时模板编译已经完成,但 DOM 元素尚未被插入文档中。 -
mounted
:实例挂载到 DOM 后调用,此时 DOM 元素已经可以被访问和操作。 -
beforeUpdate
:数据更新导致虚拟 DOM 重新渲染之前调用,可以在这个钩子中对 DOM 进行操作以便在数据变化后进行调整。 -
updated
:数据更改后,虚拟 DOM 重新渲染并应用到 DOM 上之后调用。此时 DOM 已经更新完成。 -
beforeUnmount
:实例销毁之前调用,此时你可以清理一些资源,比如定时器、事件监听器等。 -
unmounted
:实例销毁后调用,此时组件已经被从 DOM 中移除。
实现机制
Vue 的生命周期钩子是通过 Vue 的内部机制实现的。它们被定义在 Vue 实例的 options
对象中(如 beforeCreate
、created
等)。在 Vue 实例的不同阶段,Vue 会自动调用这些钩子函数。
这些钩子的具体调用顺序和行为由 Vue 的核心库控制,Vue 在创建、更新和销毁组件的过程中会遵循这些钩子的生命周期规则。