Vue.js 中的生命周期钩子是在实例化过程中会自动调用的函数,它们允许你在特定阶段执行自定义逻辑。在 Vue.js 2 和 Vue.js 3 中,生命周期钩子有一些差异,但整体结构是相似的。以下是 Vue.js 2 和 Vue.js 3 中常见的生命周期钩子:
Vue.js 2 生命周期钩子:
-
beforeCreate: 在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用。
-
created: 实例创建完成后被调用。在这一步,实例已完成以下的配置:数据观测 (data observer),属性和方法的运算,watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。
-
beforeMount: 在挂载开始之前被调用:相关的 render 函数首次被调用。
-
mounted: el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。
-
beforeUpdate: 数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。
-
updated: 由于数据更改导致的虚拟 DOM 重新渲染和打补丁后调用。
-
beforeDestroy: 实例销毁之前调用。在这一步,实例仍然完全可用。
-
destroyed: 实例销毁后调用。该钩子被调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。
Vue.js 3 生命周期钩子:
-
beforeCreate: 在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用。
-
created: 实例创建完成后被调用。在这一步,实例已完成以下的配置:数据观测 (data observer),属性和方法的运算,watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。
-
beforeMount: 在挂载开始之前被调用:相关的 render 函数首次被调用。
-
onBeforeMount (Vue 3.2+): 在挂载开始之前被调用,等效于 Vue.js 2.x 中的 beforeMount。
-
mounted: onMounted 在挂载之后被调用,等效于 Vue.js 2.x 中的 mounted。
-
beforeUpdate: 数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。
-
onBeforeUpdate (Vue 3.2+): 数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前,等效于 Vue.js 2.x 中的 beforeUpdate。
-
updated: 由于数据更改导致的虚拟 DOM 重新渲染和打补丁后调用。
-
onUpdated (Vue 3.2+): 由于数据更改导致的虚拟 DOM 重新渲染和打补丁后调用,等效于 Vue.js 2.x 中的 updated。
-
beforeUnmount: 在卸载开始之前被调用。
-
onBeforeUnmount (Vue 3.2+): 在卸载开始之前被调用,等效于 Vue.js 2.x 中的 beforeDestroy。
-
unmounted: onUnmounted 在卸载之后被调用,等效于 Vue.js 2.x 中的 destroyed。
这些生命周期钩子可以帮助开发者在不同阶段注入自定义逻辑,用于处理数据的初始化、销毁、更新等场景。