vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > Vue生命周期

Vue生命周期速查之Vue2和Vue3钩子全解析

作者:前端那点事

Vue生命周期,本质是Vue实例从创建到销毁的完整过程,每个阶段都会触发对应的钩子函数,Vue2与Vue3的生命周期整体逻辑一致,但钩子名称、使用方式有差异,下面小编就分版本和大家详细介绍一下

Vue生命周期,本质是Vue实例从创建到销毁的完整过程,每个阶段都会触发对应的钩子函数(生命周期钩子),开发者可通过这些钩子,在不同时机执行所需逻辑(如初始化数据、操作DOM、清理资源等)。核心分为「创建、挂载、更新、销毁」四大阶段,Vue2与Vue3的生命周期整体逻辑一致,但钩子名称、使用方式有差异,以下分版本详细解析,兼顾理论与实操,让新手也能快速上手、高效运用。

一、先明确核心:生命周期四大阶段

无论Vue2还是Vue3,生命周期都围绕「实例从生到死」展开,四大核心阶段不可逆,每个阶段的钩子函数只执行一次(更新阶段除外,可多次触发):

  1. 创建阶段:实例从无到有,初始化数据、配置,未挂载DOM;
  2. 挂载阶段:实例挂载到DOM树上,生成真实DOM,可开始操作DOM;
  3. 更新阶段:响应式数据发生变化,触发DOM重新渲染,可多次执行;
  4. 销毁阶段:实例被销毁,清理资源,避免内存泄漏。

二、Vue2 生命周期(选项式API,最常用)

Vue2使用选项式API,生命周期钩子共8个,按执行顺序排列,无需额外导入,直接写在组件选项中即可使用,每个钩子的作用清晰,适配日常开发场景。

1. 创建阶段(实例初始化,未挂载DOM)

核心:初始化实例、数据观测,此时DOM尚未生成,无法操作DOM。

2. 挂载阶段(实例挂载到DOM,可操作DOM)

核心:将实例渲染到页面,生成真实DOM,此时可正常操作DOM。

3. 更新阶段(响应式数据变化,可多次触发)

核心:当data中的响应式数据发生变化时,触发该阶段,仅更新变化的部分,无需重新渲染整个页面。

4. 销毁阶段(实例销毁,清理资源)

核心:实例被销毁(如组件卸载),需清理资源,避免内存泄漏。

Vue2 生命周期执行顺序(必记)

beforeCreate → created → beforeMount → mounted → (数据变化)beforeUpdate → updated → (实例销毁)beforeDestroy → destroyed

三、Vue3 生命周期(选项式+组合式API,推荐)

Vue3兼容Vue2的选项式API(生命周期用法与Vue2一致),但更推荐使用组合式API(setup语法糖),组合式API的生命周期钩子需手动导入,名称以“on”开头,核心逻辑与Vue2完全一致,只是使用方式更灵活、轻量化。

1. Vue3 选项式API(与Vue2兼容)

用法和Vue2完全一致,仅替换2个钩子名称(语义更准确),其余钩子功能、执行顺序完全相同:

<script>
export default {
  data() {
    return { count: 0 }
  },
  beforeCreate() { /* 实例创建前 */ },
  created() { /* 实例创建后 */ },
  beforeMount() { /* 挂载前 */ },
  mounted() { /* 挂载后 */ },
  beforeUpdate() { /* 更新前 */ },
  updated() { /* 更新后 */ },
  beforeUnmount() { /* 卸载前(替代beforeDestroy) */ },
  unmounted() { /* 卸载后(替代destroyed) */ }
}
</script>

2. Vue3 组合式API(setup语法糖,推荐)

组合式API的生命周期钩子需从vue中导入,名称以“on”开头,与Vue2的钩子一一对应,函数式调用,更贴合组合式开发逻辑,常用钩子如下(按执行顺序):

补充:Vue3新增2个调试用钩子(onRenderTracked、onRenderTriggered),日常开发几乎不用,仅用于调试响应式数据的渲染跟踪。

Vue3 组合式API 实操示例(setup语法糖)

<script setup>
import { ref, onMounted, onBeforeUnmount } from 'vue'

const count = ref(0)
let timer = null

// 挂载后:初始化定时器(常用场景)
onMounted(() => {
  timer = setInterval(() => {
    count.value++
  }, 1000)
})

// 卸载前:清理定时器(避免内存泄漏,常用场景)
onBeforeUnmount(() => {
  clearInterval(timer)
})
</script>

四、Vue2与Vue3生命周期核心差异(重点)

对比维度Vue2Vue3
API类型仅支持选项式API兼容选项式,推荐组合式(setup)
钩子名称(销毁阶段)beforeDestroy、destroyedbeforeUnmount、unmounted(选项式);onBeforeUnmount、onUnmounted(组合式)
钩子使用无需导入,直接写在组件选项中组合式需导入,函数式调用,更灵活
核心优势兼容旧项目,逻辑直观,上手简单轻量化,开发效率高,支持调试钩子

五、生命周期实操注意事项

六、总结(一句话记牢)

Vue生命周期就是“实例从创建到销毁”的全过程,核心是四大阶段+对应钩子,Vue2侧重选项式、兼容旧项目,Vue3兼容选项式、推荐组合式,记住“挂载后操作DOM、销毁前清理资源”,就能覆盖90%的开发场景,新手也能快速上手。

到此这篇关于Vue生命周期速查之Vue2和Vue3钩子全解析的文章就介绍到这了,更多相关Vue生命周期内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文