vue3的生命周期

Vue 3 的生命周期与 Vue 2 类似,但在 Composition API 中提供了新的方式来使用生命周期钩子。以下是 Vue 3 的生命周期钩子及其用法:

1. Options API (选项式API)中的生命周期钩子

Vue 3 保留了 Vue 2 的大部分生命周期钩子,但有两个钩子被重命名:

  • beforeDestroy → beforeUnmount

  • destroyed → unmounted

以下是 Vue 3 中 Options API 的生命周期钩子:

创建阶段(Initialization)
  • beforeCreate:

    • 在实例初始化之后,数据观测(data observation)和事件/侦听器配置之前被调用。

  • created:

    • 在实例创建完成后被调用。

    • 此时,datamethodscomputed 等已经初始化,但 DOM 还未生成。

挂载阶段(Mounting)
  • beforeMount:

    • 在挂载开始之前被调用,此时模板已经编译完成,但尚未将 DOM 渲染到页面。

  • mounted:

    • 在实例挂载到 DOM 后被调用。

    • 此时,DOM 已经渲染完成,可以访问 DOM 元素。

更新阶段(Updating)
  • beforeUpdate:

    • 在数据更新导致 DOM 重新渲染之前被调用。

    • 此时,数据已经更新,但 DOM 还未重新渲染。

  • updated:

    • 在数据更新导致 DOM 重新渲染之后被调用。

    • 此时,DOM 已经更新完成。

销毁阶段(Destruction)
  • beforeUnmount:

    • 在实例卸载之前被调用。

    • 此时,实例仍然完全可用,可以执行一些清理操作(如清除定时器、取消事件监听等)。

  • unmounted:

    • 在实例卸载之后被调用。

    • 此时,实例的所有指令和事件监听器已被移除,子实例也被卸载。

激活阶段(Keep-Alive 相关)
  • activated:

    • 当被 <keep-alive> 缓存的组件激活时调用。

  • deactivated:

    • 当被 <keep-alive> 缓存的组件停用时调用。

2. Composition API (组合式API)中的生命周期钩子

在 Composition API 中,生命周期钩子通过 onX 函数的形式使用。这些函数需要在 setup() 函数中调用。

创建阶段
  • onBeforeMount 对应  beforeMount

import { onBeforeMount } from "vue";setup() {onBeforeMount(() => {console.log("onBeforeMount: 模板编译完成,DOM 未渲染");});
}
  •  onMounted 对应  mounted
import { onMounted } from "vue";setup() {onMounted(() => {console.log("onMounted: 实例已挂载到 DOM,可以访问 DOM 元素");});
}
更新阶段
  • onBeforeUpdate 对应  beforeUpdate
import { onBeforeUpdate } from "vue";setup() {onBeforeUpdate(() => {console.log("onBeforeUpdate: 数据已更新,DOM 未重新渲染");});
}
  • onUpdated 对应  updated
import { onUpdated } from "vue";setup() {onUpdated(() => {console.log("onUpdated: 数据已更新,DOM 已重新渲染");});
}
销毁阶段
  • onBeforeUnmount 对应  beforeUnmount
import { onBeforeUnmount } from "vue";setup() {onBeforeUnmount(() => {console.log("onBeforeUnmount: 实例即将卸载,仍可访问数据和方法");});
}
  • onUnmounted 对应  unmounted
import { onUnmounted } from "vue";setup() {onUnmounted(() => {console.log("onUnmounted: 实例已卸载");});
}
激活阶段
  • onActivated 对应  activated
import { onActivated } from "vue";setup() {onActivated(() => {console.log("onActivated: 组件被激活");});
}
  • onDeactivated 对应  deactivated
import { onDeactivated } from "vue";setup() {onDeactivated(() => {console.log("onDeactivated: 组件被停用");});
}

3. 生命周期流程图

Vue 3 的生命周期流程与 Vue 2 类似,以下是简化流程图:

  1. 创建阶段:

    • beforeCreate → created

  2. 挂载阶段:

    • beforeMount → mounted

  3. 更新阶段:

    • beforeUpdate → updated

  4. 销毁阶段:

    • beforeUnmount → unmounted

  5. 激活阶段(仅适用于 <keep-alive> 缓存的组件):

    • activated → deactivated

4. Options API 与 Composition API 对比

生命周期钩子Options APIComposition API
创建阶段beforeCreate无直接对应
创建阶段created无直接对应
挂载阶段beforeMountonBeforeMount
挂载阶段mountedonMounted
更新阶段beforeUpdateonBeforeUpdate
更新阶段updatedonUpdated
销毁阶段beforeUnmountonBeforeUnmount
销毁阶段unmountedonUnmounted
激活阶段activatedonActivated
激活阶段deactivatedonDeactivated

总结

Vue 3 的生命周期钩子与 Vue 2 类似,但在 Composition API 中提供了更灵活的方式来使用这些钩子。无论是 Options API 还是 Composition API,理解生命周期的调用时机和用途,都能帮助你更好地控制组件的行为和优化性能。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/25471.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Metal学习笔记八:纹理

到目前为止&#xff0c;您已经学习了如何使用片段函数和着色器为模型添加颜色和细节。另一种选择是使用图像纹理&#xff0c;您将在本章中学习如何操作。更具体地说&#xff0c;您将了解&#xff1a; • UV 坐标&#xff1a;如何展开网格&#xff0c;以便可以对其应用纹理。 •…

SpringSecurity的核心过滤器-CsrfFilter

Spring Security除了认证授权外功能外,还提供了安全防护功能。本文我们来介绍下SpringSecurity中是如何阻止CSRF攻击的。 一、什么是CSRF攻击 跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF…

《当齐天大圣踏入3A游戏世界:黑神话·悟空的破壁传奇》:此文为AI自动生成

国产 3A 游戏的破晓之光 2024 年 8 月 20 日,这一天注定被铭记在中国游戏发展的史册上。国产首款 3A 游戏《黑神话・悟空》震撼上线,犹如一颗重磅炸弹,在全球游戏市场掀起了惊涛骇浪。仅仅上线 3 小时,其同时在线人数便突破了 140 万,一举打破 Steam 纯单机游戏最高在线纪…

rust 前端npm依赖工具rsup升级日志

rsup是使用 rust 编写的一个前端 npm 依赖包管理工具&#xff0c;可以获取到项目中依赖包的最新版本信息&#xff0c;并通过 web 服务的形式提供查看、升级操作等一一系列操作。 在前一篇文章中&#xff0c;记录初始的功能设计&#xff0c;自己的想法实现过程。在自己的使用过…

【备赛】点亮LED

LED部分的原理图 led前面有锁存器&#xff0c;这是为了防止led会受到lcd的干扰&#xff08;lcd也需要用到这些引脚&#xff09;。 每次想要对led操作&#xff0c;就需要先打开锁存器&#xff0c;再执行操作&#xff0c;最后关闭锁存器。 这里需要注意的是&#xff0c;引脚配置…

CSS 使用white-space属性换行

一、white-space属性的常见值 * 原本格式&#xff1a; 1、white-space:normal 默认值&#xff0c;空格和换行符会被忽略过滤掉&#xff1b;宽度不够时文本会自动换行 * 宽度足够时&#xff0c;normal 处理后的格式 * 宽度不够时&#xff0c; normal 处理后的格式 2、white-spa…

electron-builder打包时github包下载失败【解决办法】

各位朋友们&#xff0c;在使用electron开发时&#xff0c;选择了electron-builder作为编译打包工具时&#xff0c;是否经常遇到无法从github上下载依赖包问题&#xff0c;如下报错&#xff1a; Get "https://github.com/electron/electron/releases/download/v6.1.12/ele…

【WSL2】 Ubuntu20.04 GUI图形化界面 VcXsrv ROS noetic Vscode 主机代理 配置

【WSL2】 Ubuntu20.04 GUI图形化界面 VcXsrv ROS noetic Vscode 主机代理 配置 前言整体思路安装 WSL2Windows 环境升级为 WIN11 专业版启用window子系统及虚拟化 安装WSL2通过 Windows 命令提示符安装 WSL安装所需的 Linux 发行版&#xff08;如 Ubuntu 20.04&#xff09;查看…

2025学年安徽省职业院校技能大赛 “信息安全管理与评估”赛项 比赛样题任务书

2024-2025 学年广东省职业院校技能大赛 “信息安全管理与评估”赛项 技能测试试卷&#xff08;五&#xff09; 第一部分&#xff1a;网络平台搭建与设备安全防护任务书第二部分&#xff1a;网络安全事件响应、数字取证调查、应用程序安全任务书任务1 &#xff1a;内存取证&…

数据库导出

MySQL数据库 使用命令行导出 导出整个数据库&#xff1a;在命令行中输入mysqldump -u用户名 -p密码 数据库名 > 导出文件路径/文件名.sql。例如mysqldump -uroot -p123456 mydb > /home/user/mydb_backup.sql&#xff0c;回车后输入密码即可将名为mydb的数据库导出为SQL…

OpenCV给图像添加噪声

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 如果你已经有了一张干净的图像&#xff0c;并希望通过编程方式向其添加噪声&#xff0c;可以使用 OpenCV 来实现这一点。以下是一个简单的例子&a…

OSPF BIT 类型说明

注&#xff1a;本文为 “OSPF BIT 类型 | LSA 类型 ” 相关文章合辑。 机翻&#xff0c;未校。 15 OSPF BIT Types Explained 15 种 OSPF BIT 类型说明 Rashmi Bhardwaj Distribution of routing information within a single autonomous system in larger networks is per…

Linux网络之传输层协议(UDP,TCP协议)

目录 重新认识端口号 端口号划分 netstat pidof UDP协议 UDP的特点 面向数据报 UDP的缓冲区 全双工和半双工 TCP协议 TCP的特点 TCP报头分析 源端口&#xff0c;目标端口&#xff0c;数据偏移(报文首部长度) 序号 确认号 窗口 6个标志位 ACK SYN …

Spring Boot 热部署

文章目录 一&#xff0c;Spring Boot热部署概述二&#xff0c;对项目HelloWorld01进行热部署 1、添加开发工具依赖2、热部署配置3、热部署测试 一&#xff0c;Spring Boot热部署概述 在开发过程中&#xff0c;通常会对一段业务代码不断地修改测试&#xff0c;在修改之后往往…

【前端基础】Day 3 CSS-2

目录 1. Emmet语法 1.1 快速生成HTML结构语法 1.2 快速生成CSS样式语法 2. CSS的复合选择器 2.1 后代选择器 2.2 子选择器 2.3 并集选择器 2.4 伪类选择器 2.4.1 链接伪类选择器 2.4.2 focus伪类选择器 2.5 复合选择器总结 3. CSS的元素显示模式 3.1 什么是元素显示…

使用vscode导出Markdown的PDF无法显示数学公式的问题

我的硬件环境是M2的MacBook air&#xff0c;在vscode中使用了Markdown PDF来导出md文件对应的PDF。但不管导出html还是PDF文件&#xff0c;数学公式都是显示的源代码。 我看了许多教程&#xff0c;给的是这个方法&#xff1a;在md文件对应的html文件中加上以下代码&#xff1a…

去耦电容的作用详解

在霍尔元件的实际应用过程中&#xff0c;经常会用到去耦电容。去耦电容是电路中装设在元件的电源端的电容&#xff0c;其作用详解如下&#xff1a; 一、基本概念 去耦电容&#xff0c;也称退耦电容&#xff0c;是把输出信号的干扰作为滤除对象。它通常安装在集成电路&#xf…

[原创]openwebui解决searxng通过接口请求不成功问题

openwebui 对接 searxng 时 无法查询到联网信息&#xff0c;使用bing搜索&#xff0c;每次返回json是正常的 神秘代码&#xff1a; http://172.30.254.200:8080/search?q北京市天气&formatjson&languagezh&time_range&safesearch0&languagezh&locale…

【JavaSE-1】初识Java

1、Java 是什么? Java 是一种优秀的程序设计语言,人类和计算机之间的交流可以借助 Java 这种语言来进行交流,就像人与人之间可以用中文、英语,日语等进行交流一样。 Java 和 JavaScript 两者有关系吗? 一点都没有关系!!! 前端内容:HTML CSS JS,称为网页三剑客 2、JDK 下…

C++知识整理day10——多态(多态的定义和实现、虚函数重写/覆盖、override和final关键字、纯虚函数和抽象类、多态的原理)

文章目录 1.多态的概念2.多态的定义和实现2.1 多态的构成条件2.2 多态必须具备的两个条件&#xff08;很重要&#xff09;2.3 虚函数2.4 虚函数的重写/覆盖2.5 协议&#xff08;了解即可&#xff09;2.6 析构函数的重写2.6 override和final关键字2.7 重载/重写/隐藏的对比 3.纯…