当前位置: 首页 > ai >正文

前端流行框架Vue3教程:22. 组件生命周期

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 应用非常重要。

http://www.xdnf.cn/news/7997.html

相关文章:

  • 黑马k8s(十二)
  • 跨境支付风控失效?用代理 IP 构建「地域 - 设备 - 行为」三维防护网
  • 固定资产全链路数字化:从采购到报废的智能管理方案
  • Day 0015:Metasploit 基础解析
  • Java 海康录像机通过sdk下载的视频无法在线预览问题
  • 智能赋能与人文滋养:人工智能时代高中数字化教育的范式重构
  • 大模型应用开发之Dify进阶版使用教程—react前端+django后端+dify-API制作聊天界面
  • 【LLIE专题】基于事件相机照度估计的暗光增强方案
  • 手机合集(不定期更新)
  • redis数据持久化和配置-15(备份和还原 Redis 数据)
  • Ubuntu nginx 配置 SSL 证书支持 https 请求
  • 数据结构 -- B树和B+树
  • 插值算法 - 图像缩放插值QT
  • 容器化与云原生安全
  • 深入剖析 5G 核心网中的 PLMN
  • 青少年编程与数学 02-020 C#程序设计基础 01课题、C#编程概要
  • launch 在Kotlin 中怎么使用
  • [Vue]路径跳转和路由高级设置
  • SC3000智能相机-自动存图
  • java后端-海外登录(谷歌/FaceBook)
  • Appium+python自动化(二)- 环境搭建—下
  • Go 语言中的 Struct Tag 的用法详解
  • mysql可重复读隔离级别下的快照读和当前读
  • leetcode 148. Sort List
  • 力扣-无重复字符的最长子串
  • Golang 内存模型小结
  • Qt 最新版6.9.0使用MQTT连接腾讯云详细教程
  • window 显示驱动开发-视频内存供应和回收(一)
  • jquery.table2excel方法导出
  • 鸿蒙仓颉开发语言实战教程:实现商城应用首页