登录
首页 >  文章 >  前端

Vue生命周期钩子图解:8大阶段执行顺序全解析

时间:2026-05-09 20:51:45 440浏览 收藏

Vue生命周期看似有8个钩子让人眼花缭乱,实则牢牢围绕“创建→挂载→更新→销毁”四条主线展开,每个阶段都精准对应“动作前(before)”与“动作后(after)”两个关键节点——从实例初始化、数据就绪、DOM挂载完成,到响应式更新、真实DOM刷新,再到定时器清理、事件解绑与资源释放,理解这四步逻辑链,就能轻松掌握钩子的执行时机与使用场景,彻底告别死记硬背,让开发更清晰、更稳健。

Vue生命周期钩子怎么记?一张图带你搞清楚8个阶段的执行顺序

Vue 的生命周期钩子不用死记硬背,理解它“什么时候创建、什么时候挂载、什么时候更新、什么时候销毁”这四条主线,8个钩子就自然理清了。

创建阶段:new Vue() 到首次渲染前

这个阶段 Vue 实例刚被创建,数据还没和 DOM 关联,只完成了初始化配置和响应式系统 setup。

  • beforeCreate:实例刚被 new 出来,data、methods、computed 都还没初始化,this 指向实例但几乎不能用
  • created:data 和 methods 已就绪,可访问响应式数据、调用 methods、发起接口请求;但 $el 还不存在,DOM 还没生成

挂载阶段:把 Vue 渲染到页面上

从模板编译、生成真实 DOM,再到插入页面,是“从无到有”的关键一步。

  • beforeMount:模板已编译成 render 函数,虚拟 DOM 已生成,但尚未挂载到真实 DOM;$el 是占位符(如一个空 div),还没内容
  • mounted:组件已挂载完成,$el 可访问,DOM 真实存在,可操作 DOM、启动定时器、集成第三方库(如 echarts)

更新阶段:响应式数据变化触发重新渲染

只要 data 或 props 改变,且影响视图,就会走更新流程——注意:不是每次赋值都触发,只有引起视图变化时才进入。

  • beforeUpdate:数据已更新,虚拟 DOM 已重新渲染,但真实 DOM 还没更新;适合在更新前读取旧 DOM 状态(如滚动位置)
  • updated:真实 DOM 已同步更新完毕,可安全操作更新后的 DOM;注意避免在此钩子里修改响应式数据,否则会触发无限循环

销毁阶段:组件卸载前的清理工作

当组件被移除或 v-if 变为 false,Vue 开始销毁流程,释放资源防止内存泄漏。

  • beforeUnmount(Vue 3) / beforeDestroy(Vue 2):组件即将被卸载,仍可访问 this、data、DOM;适合清除定时器、解绑事件监听、取消 API 请求
  • unmounted(Vue 3) / destroyed(Vue 2):组件已完全销毁,$el 被移除,所有指令解绑,事件监听器清除,响应式关系解除;this 不再可用

记住口诀:“创-挂-更-毁”,每个阶段一对钩子,前一个在动作前,后一个在动作后。重点区分 beforeXXX 和 XXX 的核心差异:是否已完成对应操作(如 mounted 表示挂载完成,beforeMount 表示还没挂载)。不复杂但容易忽略。

好了,本文到此结束,带大家了解了《Vue生命周期钩子图解:8大阶段执行顺序全解析》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多文章知识!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>