🥦 Vue 生命周期
2025-01-22 08:19:30    672 字   
This post is also available in English and alternative languages.

1. 什么是生命周期

通俗的理解即:“从生到亡”。

在 Vue 中组件从创建到销毁的过程就是生命周期。即指从创建、初始化数据、编译模板、挂载Dom -> 渲染、更新 -> 渲染、卸载等一系列过程。

对于我这个本职后端开发而言,为了快速理解,我会将其认为是类似于 Spring 中托管的 Bean 的生命周期管理。

在 Spring 中,Bean 的创建、初始化、使用和销毁都由 Spring 容器负责,而在 Vue 中,组件的创建、挂载、更新和销毁都由 Vue 框架负责。


2. 生命周期钩子

它指的是 Vue 组件在其生命周期中不同阶段触发的回调函数。这些钩子函数允许你在组件的创建、更新、销毁等关键时间点执行特定的逻辑。

同样套用 Spring 中托管的 Bean 管理,「钩子」可以理解为某个时间点执行特定逻辑的回调方法。

Vue 生命周期描述
beforeCreate组件实例被创建之初
created组件实例已经完全创建
beforeMount组件挂载之前
mounted组件挂载到实例上去之后
beforeUpdate组件数据发生变化,更新之前
updated组件数据更新之后
beforeDestroy组件实例销毁之前
destroyed组件实例销毁之后
activatedkeep-alive 缓存的组件激活时
deactivatedkeep-alive 缓存的组件停用时调用
errorCaptured捕获一个来自子孙组件的错误时被调用

vue生命周期图示

3. 不同版本的比较

Vue 2 的生命周期写法名称是 Options API(选项式 API ),Vue 3 新的生命周期写法名称是 Composition API(组合式 API )。

2.x生命周期3.x生命周期执行时机
beforeCreatesetup组件创建前执行
createdsetup组件创建后执行
beforeMountonBeforeMount组件挂载到节点上之前执行
mountedonMounted组件挂载完成后执行
beforeUpdateonBeforeUpdate组件更新之前执行
updatedonUpdated组件更新完成之后执行
beforeDestroyonBeforeUnmount组件卸载之前执行
destroyedonUnmounted组件卸载完成后执行
errorCapturedonErrorCaptured当捕获一个来自子孙组件的异常时激活钩子函数

可以看到 Vue 2 生命周期里的 beforeCreate 和 created ,在 Vue 3 里已被 setup 替代。

在 Vue 3 的 Composition API 写法里,每个生命周期函数都要先导入才可以使用,并且所有生命周期函数统一放在 setup 里运行。

如果需要达到 Vue 2 的 beforeCreatecreated 生命周期的执行时机,直接在 setup 里执行函数即可。


4. Reference