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

VUE的8个生命周期

在Vue.js中,生命周期是Vue组件从创建到销毁的一系列钩子函数,允许开发者在这些特定阶段执行代码。这些生命周期钩子提供了对组件状态变化的直接访问,使得开发者可以在组件的不同阶段执行特定的操作,如数据获取、DOM渲染、组件更新等。

Vue 2.x 和 Vue 3.x 的生命周期钩子有所不同,但基本的理念是一致的。这里我们主要介绍Vue 2.x的常见生命周期钩子,因为Vue 3.x在大多数情况下使用了相同的命名和概念,但引入了Composition API,这可能会影响一些生命周期的使用方式。

Vue 2.x 生命周期钩子

  1. beforeCreate:在实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用。

  2. created:在实例创建完成后被立即调用,此时已完成数据观测(data observer),属性和方法的运算,watch/event 事件回调。然而,挂载阶段(DOM 挂载)前的 data.property 和 methods 中的 methods 无法访问。

  3. beforeMount:在挂载开始之前被调用:相关的 render 函数首次被调用。该钩子在生成的 HTML 挂载到页面之前被调用。

  4. mounted:el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。如果根实例挂载了一个文档内元素,当 mounted 被调用时,代表已经进入了可交互阶段。

  5. beforeUpdate:数据更新时调用,发生在虚拟 DOM 打补丁之前。这里适合在更新之前访问现有的 DOM,比如手动移除已添加的事件监听器。

  6. updated:由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用此钩子。当这个钩子被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。然而在大多数情况下,你应该避免在此阶段更改状态,因为这可能会导致更新无限循环。

  7. beforeDestroy:在实例销毁之前调用。在这一步,实例仍然完全可用。

  8. destroyed:Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。

Vue 3.x Composition API

虽然Vue 3.x引入了Composition API来替代Options API,但它并没有改变生命周期的概念或名称。Vue 3.x的生命周期钩子仍然是beforeCreatecreatedbeforeMountmountedbeforeUpdateupdatedbeforeUnmount(代替beforeDestroy)、unmounted(代替destroyed)。

使用Composition API时,你可以通过onBeforeMountonMountedonBeforeUpdateonUpdatedonBeforeUnmountonUnmounted等函数来访问这些生命周期钩子,它们是响应式引用的一部分,允许你在setup函数中直接使用它们。例如:

let app = new Vue({el: "#app",data: {message: '提示消息',},beforeCreate() {console.log("创建之前", this.message);},created() {console.log("创建完毕", this.message);},beforeMount() {console.log("挂载之前");},mounted() {console.log("挂载完毕", this.$el);},beforeUpdate() {console.log("更新之前");},updated() {console.log("更新完毕");},beforeDestroy() {console.log("销毁之前");},destroyed() {console.log("销毁完毕");}});

通过使用这些生命周期钩子,你可以精确控制组件在各个阶段的执行逻辑,从而更好地管理组件的行为和状态。

http://www.lryc.cn/news/619120.html

相关文章:

  • C++list(2)
  • 【JavaEE】多线程之线程安全(上)
  • 串口通信学习
  • 【PyTorch学习笔记 - 03】 Transforms
  • Spring-Cache 缓存数据
  • Dubbo 3.x源码(33)—Dubbo Consumer接收服务调用响应
  • 赛灵思ZYNQ官方文档UG585自学翻译笔记:UART Controller,通用异步收发传输器控制器
  • I2C 接收与发送数据的流程
  • 成都影像产业园实训考察:重庆五一职院关注技能就业
  • 【DL】深层神经网络
  • 《疯狂Java讲义(第3版)》学习笔记ch1
  • 力扣 hot100 Day71
  • 【1】Transformers快速入门:自然语言处理(NLP)是啥?
  • 机器学习第十课之TF-IDF算法(红楼梦文本分析)
  • LangChain SQLChatMessageHistory:SQL数据库存储聊天历史详解
  • 混合精度加快前向传播的速度
  • 计算机视觉(8)-纯视觉方案实现端到端轨迹规划(模型训练+代码)
  • MDD-Net:通过相互Transformer进行多模态抑郁症检测
  • 【沧海拾昧】使用LibUsbDotNet进行Windows/Ubuntu跨平台串口管理
  • XGBoost 的适用场景以及与 CNN、LSTM 的区别
  • 循环神经网络(RNN)全面解析
  • 文件IO(1)
  • 【doris基础与进阶】3-Doris安装与部署
  • UE5多人MOBA+GAS 42、提高头像画质
  • 方格网法土方计算不规则堆体
  • 常用Linux指令:Java/MySQL/Tomcat/Redis/Nginx运维指南
  • 安路Anlogic FPGA下载器的驱动安装与测试教程
  • 京东方 DV133FHM-NN1 FHD13.3寸 工业液晶模组技术档案
  • C++方向知识汇总(四)
  • UserController类讲解