上一篇
想象你正在开发一个Vue组件,比如一个天气预报小卡片,它从诞生(创建)到显示在页面上(挂载),再到数据更新时自动刷新(更新),最后被移除(销毁),整个过程就像一个人的生命历程,Vue通过生命周期函数,让你能在每个关键节点插入自己的逻辑,比如在组件创建时请求数据,或者在销毁前清理定时器。
我们就来彻底搞懂Vue的生命周期函数,掌握它们的执行顺序和适用场景。
Vue的生命周期可以分为四个阶段:
每个阶段都有对应的钩子函数(Hook),让你在特定时机执行代码。
这个阶段主要是组件的初始化和数据设置,尚未渲染DOM。
beforeCreate
data
和methods
。 beforeCreate() { console.log("beforeCreate: 数据还没初始化", this.message); // undefined }
created
created() { console.log("created: 数据已初始化", this.message); // 可访问 this.fetchData(); // 假设这是一个API请求方法 }
这个阶段涉及DOM的渲染和挂载。
beforeMount
beforeMount() { console.log("beforeMount: 模板编译完成,但未渲染到DOM"); }
mounted
window.addEventListener
)。 mounted() { console.log("mounted: 组件已挂载"); this.chart = new Chart(this.$refs.chartCanvas, { ... }); // 操作DOM }
当数据变化导致重新渲染时触发。
beforeUpdate
beforeUpdate() { console.log("beforeUpdate: 数据变了,DOM还没更新"); this.scrollPosition = this.$refs.list.scrollTop; // 记录滚动位置 }
updated
updated
里直接修改数据)。 updated() { console.log("updated: DOM已更新"); this.adjustLayout(); // 调整布局 }
组件被移除时触发,用于清理工作。
beforeDestroy
beforeDestroy() { console.log("beforeDestroy: 组件即将销毁"); clearInterval(this.timer); // 清除定时器 window.removeEventListener("resize", this.handleResize); // 移除事件监听 }
destroyed
destroyed() { console.log("destroyed: 组件已销毁"); }
beforeCreate
→ created
beforeMount
→ mounted
beforeUpdate
→ updated
(可多次触发) beforeDestroy
→ destroyed
生命周期钩子 | 典型用途 |
---|---|
created |
异步数据请求(API调用) |
mounted |
DOM操作、第三方库初始化 |
beforeUpdate |
获取更新前的DOM状态 |
updated |
依赖新DOM的操作 |
beforeDestroy |
清理定时器、取消事件监听 |
updated
里修改数据,可能导致无限循环。 async/await
可以在created
或mounted
中使用,但要注意错误处理。 setup
)没有完全替代生命周期,而是提供了更灵活的组合方式(如onMounted
、onUnmounted
)。 掌握生命周期函数,你就能更精准地控制Vue组件的运行流程,写出更高效、更健壮的代码! 🚀
本文由 库玉书 于2025-08-01发表在【云服务器提供商】,文中图片由(库玉书)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/505370.html
发表评论