Vue 3 生命周期和生命周期函数

news/2025/2/23 3:50:17

Vue.js 是一个用于构建用户界面的渐进式框架。随着 Vue 3 的发布,它引入了许多新的功能和改进,包括更灵活和性能更高的生命周期管理。在这份文档中,我们将详细介绍 Vue 3 的生命周期和相关生命周期函数

一、生命周期概述

Vue 实例在其生命周期内经过一系列的初始化步骤,例如设置数据观测、编译模板、挂载实例到 DOM 以及在数据变化时更新 DOM。通过生命周期钩子,我们可以在这些步骤中执行自定义的操作。

二、生命周期图示

在这里插入图片描述

三、生命周期函数

以下是 Vue 3 中常用的生命周期函数以及它们的调用时机:

  1. beforeCreate

    • 在实例初始化之后,数据观测 (data observer) 和事件配置 (event setup) 之前调用。
    • 此时,组件实例的属性如 datacomputedmethods 尚未初始化。
  2. created

    • 在实例创建完成后被立即调用。
    • 在这一步,实例已完成数据观测、属性和方法的初始化,但还没有开始模板编译、挂载 DOM。
  3. beforeMount

    • 在挂载开始之前被调用:相关的 render 函数首次被调用。
    • 此时,虚拟 DOM 已经创建并渲染为真实 DOM,但尚未插入文档中。
  4. mounted

    • 在挂载完成后被调用。
    • 组件已经被挂载,el 属性可以访问到真实 DOM 元素。
  5. beforeUpdate

    • 组件数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。
    • 你可以在这个钩子中进一步更改状态,这不会触发附加的重渲染过程。
  6. updated

    • 由于数据变化导致的虚拟 DOM 重新渲染和打补丁完成之后调用。
    • 调用时,组件 DOM 已经更新。
  7. beforeUnmount

    • 在组件实例卸载之前调用。
    • 适用于清理工作,例如清楚定时器、取消订阅等。
  8. unmounted

    • 组件实例卸载后调用。
    • 实例已被销毁,所有的事件监听器被移除,所有的子实例也被销毁。

四、示例代码

下面是一个简单的 Vue 3 组件示例,展示了如何使用生命周期钩子:

javascript"><template>
  <div>
    <h1>{{ message }}</h1>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: 'Hello, Vue 3!'
    };
  },
  beforeCreate() {
    console.log('beforeCreate');
  },
  created() {
    console.log('created');
  },
  beforeMount() {
    console.log('beforeMount');
  },
  mounted() {
    console.log('mounted');
  },
  beforeUpdate() {
    console.log('beforeUpdate');
  },
  updated() {
    console.log('updated');
  },
  beforeUnmount() {
    console.log('beforeUnmount');
  },
  unmounted() {
    console.log('unmounted');
  }
};
</script>

在这个示例中,每个生命周期钩子都会在其对应的阶段被调用,并在控制台输出一条消息。

五、总结

了解 Vue 3 的生命周期和生命周期函数是掌握 Vue 3 的关键一步。通过使用这些钩子函数,我们可以在组件的不同阶段执行特定的逻辑,从而更好地控制和管理组件的行为。

更多详细信息和更新内容,请参阅 Vue.js 官方文档。


http://www.niftyadmin.cn/n/5862943.html

相关文章

Python 入门教程(2)搭建环境 | 2.3、VSCode配置Python开发环境

文章目录 一、VSCode配置Python开发环境1、软件安装2、安装Python插件3、配置Python环境4、包管理5、调试程序 前言 Visual Studio Code&#xff08;简称VSCode&#xff09;以其强大的功能和灵活的扩展性&#xff0c;成为了许多开发者的首选。本文将详细介绍如何在VSCode中配置…

同程旅行对象存储实践:架构演进与未来展望

在数字化转型的浪潮中&#xff0c;同程旅行作为旅游行业的佼佼者&#xff0c;面临着海量数据存储与管理的挑战。为了应对这一挑战&#xff0c;同程旅行研发中心架构师周祝群及其团队开展了一系列对象存储实践&#xff0c;旨在构建一个可扩展、高可用、高性能且低成本的存储解决…

【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析⑫】

ISO 14229-1:2023 UDS诊断【ECU复位0x11服务】_TestCase12 作者&#xff1a;车端域控测试工程师 更新日期&#xff1a;2025年02月18日 关键词&#xff1a;UDS诊断协议、ECU复位服务、0x11服务、ISO 14229-1:2023 TC11-012测试用例 用例ID测试场景验证要点参考条款预期结果TC…

Linux、Docker、Redis常见面试题

1. Linux 什么是Linux&#xff1f; Linux是一种基于UNIX的操作系统&#xff0c;最初是由Linus Torvalds引入的。它基于Linux内核&#xff0c;可以运行在由Intel&#xff0c;MIPS&#xff0c;HP&#xff0c;IBM&#xff0c;SPARC和Motorola制造的不同硬件平台上。Linux中另一个…

QT 引入Quazip和Zlib源码工程到项目中,无需编译成库,跨平台,压缩进度

前言 最近在做项目时遇到一个需求&#xff0c;需要将升级的文件压缩成zip&#xff0c;再进行传输&#xff1b; 通过网络调研&#xff0c;有许多方式可以实现&#xff0c;例如QT私有模块的ZipReader、QZipWriter&#xff1b;或者第三方库zlib或者libzip或者quazip等&#xff1…

【华为】报文统计的技术NetStream

什么是NetStream NetStream是一项基于“流”来提供报文统计的技术。它根据报文的目的IP地址、目的端口号、协议号、源IP地址等关键值来区分流信息&#xff0c;并针对流信息进行数据流统计&#xff0c;再将统计信息发送至服务器供分析。通过分析这些统计信息&#xff0c;网络管…

C++面试题,进程和线程方面(1)

文章目录 前言进程和线程有什么不同进程&#xff0c;线程的通讯方式什么是锁为什么说锁可以使线程安全加锁有什么副作用总结 前言 这是个人总结进程和线程方面的面试题。如果有错&#xff0c;欢迎佬们前来指导&#xff01;&#xff01;&#xff01; 进程和线程有什么不同 进程…

【每日论文】TESS 2: A Large-Scale Generalist Diffusion Language Model

下载PDF或阅读论文&#xff0c;请点击&#xff1a;LlamaFactory - huggingface daily paper - 每日论文解读 | LlamaFactory | LlamaFactory 摘要 我们推出了TESS 2&#xff0c;这是一种通用的指令跟随扩散语言模型&#xff0c;其性能优于当代的指令调整扩散模型&#xff0c;有…