网站首页 > 精选文章 正文
22. 组件生命周期
每个Vue组件实例在创建时都需要经历一系列的初始化步骤,比如设置好数据侦听,编译模板,挂载实例到DOM,以及在数据改变时更新DOM。在此过程中,它也会运行被称为生命周期钩子的函数,让开发者有机会在特定阶段运行自己的代码
/**
* 组件的生命周期
* 1. 创建阶段:beforeCreate,created
* 2. 挂载阶段:beforeMount,mounted
* 3. 更新阶段:beforeUpdate,updated
* 4. 销毁阶段:beforeUnmount,unmounted
*/
在 Vue 中,组件的生命周期是指从创建到销毁的整个过程。Vue 提供了多个钩子函数,允许我们在特定的阶段执行自定义逻辑。
生命周期阶段
Vue 组件的生命周期可以分为四个主要阶段:
1. 创建阶段
- beforeCreate():组件实例刚刚被创建,此时数据观测和事件配置尚未初始化。
- created():组件实例已经创建完成,数据观测、属性和事件方法已经配置好。
beforeCreate() {
console.log('组件创建之前');
},
created() {
console.log('组件创建完毕');
}
2. 挂载阶段
- beforeMount():模板编译/挂载之前,此时还没有渲染 DOM。
- mounted():模板渲染完成,此时可以访问 DOM 元素。
beforeMount() {
console.log('组件挂载/渲染之前');
},
mounted() {
console.log('组件挂载/渲染完毕');
}
3. 更新阶段
- beforeUpdate():组件更新之前,响应式数据发生变化但 DOM 还未更新。
- updated():组件更新完成后调用,此时 DOM 已经更新。
beforeUpdate() {
console.log('组件更新之前');
},
updated() {
console.log('组件更新完毕');
}
4. 销毁阶段
- beforeUnmount():组件销毁之前调用,此时组件仍然完全可用。
- unmounted():组件销毁完成后调用,此时所有指令已被解绑,子组件也已被销毁。
beforeUnmount() {
console.log('组件销毁之前');
},
unmounted() {
console.log('组件销毁完毕');
}
示例代码
以下是一个完整的示例,展示了如何在 App.vue 文件中使用这些生命周期钩子:
<script>
export default {
beforeCreate() {
console.log('组件创建之前');
},
created() {
console.log('组件创建完毕');
},
beforeMount() {
console.log('组件挂载/渲染之前');
},
mounted() {
console.log('组件挂载/渲染完毕');
},
beforeUpdate() {
console.log('组件更新之前');
},
updated() {
console.log('组件更新完毕');
},
beforeUnmount() {
console.log('组件销毁之前');
},
unmounted() {
console.log('组件销毁完毕');
}
};
</script>
<template>
<h3>组件的生命周期</h3>
</template>
我们可以看到,页面加载完毕后,执行到了渲染完毕mounted().
那我们加一些代码,让页面数据可以产生变化。
app.vue
<script>
export default {
data() {
return {
messgae: '更新之前'
}
},
methods: {
updataHandle() {
this.messgae = '更新之后'
}
},
beforeCreate() {
console.log('组件创建之前')
},
created() {
console.log('组件创建完毕')
},
beforeMount() {
console.log('组件挂载/渲染之前')
},
mounted() {
console.log('组件挂载/渲染完毕')
},
beforeUpdate() {
console.log('组件更新之前')
},
updated() {
console.log('组件更新完毕')
},
beforeUnmount() {
console.log('组件销毁之前')
},
unmounted() {
console.log('组件销毁完毕')
}
}
</script>
<template>
<h3>组件的生命周期</h3>
<p>{{ messgae }}</p>
<button @click="updataHandle">更新</button>
</template>
我们点击按钮后就可以看到
通过合理利用这些生命周期钩子,你可以在组件的不同阶段执行必要的操作,例如初始化数据、获取远程数据、清理资源等。这对于构建高效且可维护的 Vue 应用非常重要。
猜你喜欢
- 2025-06-13 前端必看!7 个 Vue3 性能优化实战技巧,让页面飞起来
- 2025-06-13 前端也能玩转截图?uni-app + Vue3 实现页面快照功能
- 2025-06-13 Vue2 升级 Vue3 一文通关(vue-cli2.0升级3.0)
- 2025-06-13 Vue2的16种传参通信方式(vue有几种传参方式)
- 2025-06-13 面试官:聊聊你知道的Vue与React的区别
- 2025-06-13 vue3.0总结之ref与reactive(vue ref reactive)
- 2025-06-13 90% 的前端工程师都不知道的 Vue3 实战神操作,看完直呼后悔没早学
- 2025-06-13 vue3 组件初始化流程(vue组件初始化顺序)
- 2025-06-13 从 React 过渡到 Vue 3:开发者的实践指南
- 2025-06-13 vue重定向(vue重定向后403报错)
- 最近发表
- 标签列表
-
- 向日葵无法连接服务器 (32)
- git.exe (33)
- vscode更新 (34)
- dev c (33)
- git ignore命令 (32)
- gitlab提交代码步骤 (37)
- java update (36)
- vue debug (34)
- vue blur (32)
- vscode导入vue项目 (33)
- vue chart (32)
- vue cms (32)
- 大雅数据库 (34)
- 技术迭代 (37)
- 同一局域网 (33)
- github拒绝连接 (33)
- vscode php插件 (32)
- vue注释快捷键 (32)
- linux ssr (33)
- 微端服务器 (35)
- 导航猫 (32)
- 获取当前时间年月日 (33)
- stp软件 (33)
- http下载文件 (33)
- linux bt下载 (33)