上一篇
想象你是一位 Vue 组件的"人生导师"👩🏫,一位新组件 MyComponent
来向你咨询:"我从创建到消失会经历什么?哪些关键时刻需要我主动参与?"
你微微一笑,掏出一张生命周期地图🗺️:"从挂载到更新再到销毁,每个阶段都有专属'钩子'(Hook)等你触发,就像人生中的毕业典礼🎓、婚礼💍、退休派对🎉……"
Vue 组件的生命周期分为三大阶段:
每个阶段都有对应的生命周期钩子函数,让你在关键时刻插入自定义逻辑。
export default { beforeCreate() { /* 组件胚胎期:data/methods 还未生成 */ }, created() { /* 组件出生:可访问 data,但还未挂载到 DOM */ }, beforeMount() { /* 挂载前夜:模板编译完成,但未替换 DOM */ }, mounted() { /* 正式上岗:DOM 已渲染,可操作 DOM 元素 */ } }
💡 经典场景:
created
:初始化 API 数据请求 📡 mounted
:操作 DOM 或集成第三方库(如地图插件🗺️) export default { beforeUpdate() { /* 数据变化,但 DOM 未重新渲染 */ }, updated() { /* DOM 已更新,小心无限循环! */ } }
⚠️ 警告:
在 updated
中修改数据可能触发递归更新!推荐用 watch
或 nextTick
代替。
export default { beforeUnmount() { /* 临终关怀:清理定时器、事件监听 */ }, unmounted() { /* 组件已从 DOM 移除 */ } }
🔧 必做事项:
setInterval
⏱️ window.removeEventListener
🎧 被 <keep-alive>
缓存的组件会多两个钩子:
export default { activated() { /* 从缓存中复活 */ }, deactivated() { /* 进入后台休眠 */ } }
🌰 例子:
activated
:恢复滚动位置 📜 deactivated
:暂停视频播放 ▶️ created
而非 mounted
(更早发起请求) mounted
之后 beforeUnmount
清理副作用 updated
执行重操作 beforeDestroy
→ beforeUnmount
destroyed
→ unmounted
renderTracked
/ renderTriggered
(调试用) 阶段 | 钩子函数 | 典型用途 |
---|---|---|
创建 | beforeCreate |
插件注入 |
创建 | created |
数据初始化 |
创建 | beforeMount |
极少使用 |
创建 | mounted |
DOM 操作 |
更新 | beforeUpdate |
获取更新前状态 |
更新 | updated |
依赖 DOM 的操作 |
销毁 | beforeUnmount |
清理工作 |
销毁 | unmounted |
极少使用 |
你可以自信地告诉 MyComponent
:"你的每个重要时刻,都有对应的钩子保驾护航!" 🚀
基于 Vue 3 版本,最后更新于 2025 年 7 月)
本文由 窦晶滢 于2025-07-30发表在【云服务器提供商】,文中图片由(窦晶滢)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/483323.html
发表评论