Vue的生命周期是指Vue实例从创建到销毁的整个过程中,会经历一系列的阶段和回调函数。这些生命周期钩子函数提供了在不同阶段执行代码的机会,让我们可以更好地控制Vue实例的行为。
下面详细介绍Vue 2.x和Vue 3.x中的生命周期钩子函数以及它们的作用:
Vue 2.x生命周期钩子函数
-
beforeCreate:
- 在实例初始化之后,但在数据观测和事件配置之前被调用。
- 此时,data和methods等选项尚未初始化,并且无法访问this。
-
created:
- 实例已经完成数据观测和事件配置,但挂载阶段还未开始。
- 可以访问data和methods,并且可以进行一些异步操作。
-
beforeMount:
- 在挂载开始之前被调用。
- 此时,模板编译已经完成,但尚未将模板渲染到DOM中。
-
mounted:
- 挂载完成时被调用。
- 实例已经将模板渲染到DOM中,并且可以对DOM进行操作。
- 通常在这个阶段进行一些初始化的工作,比如获取远程数据。
-
beforeUpdate:
- 数据更新时调用,但在DOM重新渲染之前。
- 可以对数据进行一些处理或做其他操作。
-
updated:
- 数据更新完成时调用。
- DOM已经重新渲染,可以对更新后的DOM进行操作。
-
beforeDestroy:
- 实例销毁之前调用。
- 实例仍然完全可用,可以进行一些清理工作。
-
destroyed:
- 实例销毁之后调用。
- 实例已经被销毁,所有的事件监听器和子组件也都被移除。
Vue 3.x生命周期钩子函数
在Vue 3中,引入了组合式API,生命周期钩子函数的使用方式有所变化。以下是Vue 3中常见的生命周期钩子函数及其对应的组合式API:
- beforeCreate和created被替代为onBeforeMount和onMounted。
- beforeUpdate和updated被替代为onBeforeUpdate和onUpdated。
- beforeDestroy和destroyed被替代为onBeforeUnmount和onUnmounted。
此外,Vue 3还提供了一些自定义的钩子函数,用于与Vue Router结合使用,在路由切换过程中进行额外的逻辑处理。