Vue 组件生命周期(四)

Vue 组件生命周期

    Vue3 的组件生命周期可以概括为四个阶段:创建、挂载、更新、销毁。每个阶段都包含了一组钩子函数,用于在不同阶段执行特定的操作。

生命周期各阶段对应以下 Hooks 函数:

 

一、创建阶段

  1. setup()
    • Vue3 引入的新生命周期函数,替代了 Vue2 的 beforeCreate 和 createdsetup() 在组件创建之前被调用,用于设置响应式数据、方法等。
    • 注意setup() 中无法访问 this,因为它在组件实例初始化之前执行。

二、挂载阶段

  1. onBeforeMount()
    • 组件挂载前调用,此时模板已编译成渲染函数,但尚未挂载到 DOM。
  2. onMounted()
    • 组件挂载后调用,此时组件已渲染到 DOM 中,可以执行 DOM 相关的操作。

三、更新阶段

    Vue3 组件在响应式数据变化时会进入更新阶段,这个阶段包括两个重要的钩子函数。

  1. onBeforeUpdate()
    • 组件即将因为响应式数据变化而重新渲染前调用,可用于访问当前的 DOM 状态。
  2. onUpdated()
    • 组件因为响应式数据变化而重新渲染后调用,可用于执行更新后的副作用操作。

四、销毁阶段

当 Vue 组件不再需要时,会进入销毁阶段,这个阶段包括两个钩子函数。

  1. onBeforeUnmount()
    • 组件即将被卸载前调用,可用于执行清理操作,如取消事件监听器、清除定时器等。
  2. onUnmounted()
    • 组件已卸载后调用,此时组件的所有指令都已解绑,所有事件监听器都已被移除,所有的子实例也都被销毁。

演示:

<template>
	<div>
		<p>我是组件</p>
		<el-button @click="change">{{name}}</el-button>
	   <!-- 

    	<hr/>
		<button @click="show = !show">隐藏/显示自定义功能组件</button>
		<My v-if="show" />
     -->
	</div>
</template>

<script setup>
  import{ref,onBeforeMount,onMounted,onBeforeUpdate,onUpdated,onBeforeUnmount,onUnmounted} from 'vue'
  //导入组件
  import My from './My.vue'


 const name=ref("mike");
 const show=ref(true)
 
 
 const change=()=>{
	 //数据处理逻辑
	  name.value = (name.value == 'mike') ? '麦克' : 'mike'
 }

console.log('创建', name.value)

//创建钩子
 onBeforeMount(() => {
	 //创建之前是读不到dom的
	console.log("挂载之前",name.value)
});


 onMounted(() => {
	 //创建完成之后
	console.log("挂载完毕",name.value)
});


//更新
onBeforeUpdate(() => {
    //获取的是更新之前的dom
    console.log("更新之前",name.value);
});

onUpdated(() => {
    console.log("更新完毕",name.value);
});
//销毁
onBeforeUnmount(() => {
    console.log("销毁之前",name.value);
});

onUnmounted(() => {
    console.log("销毁完毕",name.value);
});

</script>

<style>
	.el-button{
		width:150px;
	}
</style>

演示效果: 

1、运行后

2、单击按钮 

3、重新保存

总结:

    Vue3 的组件生命周期为开发者提供了更精细的控制能力,通过合理使用这些生命周期钩子,可以编写出更加高效、可维护的 Vue 应用。希望本文能帮助读者更好地理解 Vue3 的组件生命周期,并在实际开发中灵活运用。 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

idea main 不是模块 导致找不到或无法加载主类

问题 导入一个新项目&#xff0c;然后执行启动类&#xff0c;直接报错&#xff1a; 找不到或无法加载主类。 把编译的删除了&#xff0c;重新处理&#xff0c;也不行。 看了下main和test不是模块 正常的是&#xff1a; 处理&#xff1a; 把项目的 .gradle 和 .idae 目录删了&am…

推荐一款优秀的pdf编辑器:Ashampoo PDF Pro

Ashampoo PDF Pro是管理和编辑 PDF 文档的完整解决方案。程序拥有您创建、转换、编辑和保护文档所需的一切功能。根据需要可以创建特定大小的文档&#xff0c;跨设备可读&#xff0c;还可以保护文件。现在您还能像编辑Word文档一样编辑PDF! 软件特点 轻松处理文字 如 Microso…

在manjaro 2024里使用yay命令安装ROS2

不建议这么安装&#xff0c;研究了两天以失败告终。要不就手动编译吧。。。&#xff08;在系统环境良好的情况下&#xff0c;最好是刚装完系统就装ROS&#xff09;真的太多不适配了&#xff0c;旧有的很多yay包都会遇到一些奇怪的问题&#xff1a; 0.一开始就会遇到网络卡住的…

平台化运营公司如何在创业市场招商

在当今商业环境中&#xff0c;平台化运营的公司正成为推动经济发展的重要力量。对于这类公司而言&#xff0c;在创业市场招商意义重大。 平台化运营公司具有独特特点&#xff1a;通过搭建开放共享平台连接供需双方&#xff0c;实现资源优化配置与价值创造。比如电子商务平台、社…

mybatis数据映射(记录踩坑点)

刚开始&#xff0c;userInfo里面的id我默认以为是User表的id&#xff0c;但是后面稍微看了一下返回的数据&#xff0c;userId跟replyId一致&#xff0c;我就知道userInfo里的id指的是Reply的id&#xff08;应该是命名冲突&#xff0c;先查Reply有没有id&#xff0c;没有&#x…

OpenCV基本操作(python开发)——(7)实现图像校正

OpenCV基本操作&#xff08;python开发&#xff09;——&#xff08;1&#xff09; 读取图像、保存图像 OpenCV基本操作&#xff08;python开发&#xff09;——&#xff08;2&#xff09;图像色彩操作 OpenCV基本操作&#xff08;python开发&#xff09;——&#xff08;3&…

【工具使用】VSCode如何将本地项目关联到远程的仓库 (vscode本地新项目与远程仓库建立链接)

在日常练习的项目中&#xff0c;我每次都在vscdoe编写前台代码&#xff0c;但是对于编写的代码&#xff0c;如何将本地项目关联到远程的仓库&#xff1b;这里做一下记录 文章目录 1、Gitee 新建远程仓库2、将本地的项目和远程仓库进行关联**3、将本地修改的代码推送到远程通过命…

语言≠思维,大模型学不了推理:一篇Nature让AI社区炸锅了

转自&#xff1a;机器之心 大语言模型&#xff08;LLM&#xff09;为什么空间智能不足&#xff0c;GPT-4 为什么用语言以外的数据训练&#xff0c;就能变得更聪明&#xff1f;现在这些问题有 「标准答案」了。 近日&#xff0c;一篇麻省理工学院&#xff08;MIT&#xff09;等…

技术星河中的璀璨灯塔 —— 青云交的非凡成长之路

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

高空作业未系安全带监测系统 安全带穿戴识别预警系统

在各类高空作业场景中&#xff0c;安全带是保障作业人员生命安全的关键防线。然而&#xff0c;由于人为疏忽或其他原因&#xff0c;作业人员未正确系挂安全带的情况时有发生&#xff0c;这给高空作业带来了巨大的安全隐患。为有效解决这一问题&#xff0c;高空作业未系安全带监…

移远通信闪耀2024香港秋灯展,以丰富的Matter产品及方案推动智能家居产业发展

10月27-30日&#xff0c;2024香港国际秋季灯饰展在香港会议展览中心盛大开展。 作为全球领先的物联网整体解决方案供应商&#xff0c;移远通信再次亮相&#xff0c;并重点展示了旗下支持Matter协议以及亚马逊ACK ( Alexa Connect Kit ) SDK for Matter方案的Wi-Fi模组、低功耗蓝…

Java如何实现PDF转高质量图片

大家好&#xff0c;我是 V 哥。在Java中&#xff0c;将PDF文件转换为高质量的图片可以使用不同的库&#xff0c;其中最常用的库之一是 Apache PDFBox。通过该库&#xff0c;你可以读取PDF文件&#xff0c;并将每一页转换为图像文件。为了提高图像的质量&#xff0c;你可以指定分…

【力扣刷题实战】另一棵树的子树

大家好&#xff0c;我是小卡皮巴拉 文章目录 目录 力扣题目&#xff1a; 另一棵树的子树 题目描述 示例 1&#xff1a; 示例 2&#xff1a; 解题思路 问题理解 算法选择 具体思路 解题要点 完整代码&#xff08;C语言&#xff09; 兄弟们共勉 &#xff01;&#xf…

ubuntu 24 (wayland)如何实现无显示器远程桌面

ubuntu 24默认采用的是wayland而非x11&#xff0c;查过文档vnc对wayland的支持不是很好&#xff0c;折腾了好久&#xff0c;弄了一个如下的方案供参考&#xff1a; 硬件条件 需要一个显卡欺骗器或者可以接HDMI口作为视频信号源输出的设备。 将ubuntu的主机的HDMI输出接到该硬…

StructRAG简介

StructRAG是一种新型的框架&#xff0c;旨在提升大型语言模型&#xff08;LLMs&#xff09;在知识密集型推理任务中的性能。它通过推理时的混合信息结构化机制&#xff0c;根据任务需求以最合适的格式构建和利用结构化知识。 以下是StructRAG的核心组成部分和工作流程&#xff…

聚类分析算法——K-means聚类 详解

K-means 聚类是一种常用的基于距离的聚类算法&#xff0c;旨在将数据集划分为 个簇。算法的目标是最小化簇内的点到簇中心的距离总和。下面&#xff0c;我们将从 K-means 的底层原理、算法步骤、数学基础、距离度量方法、参数选择、优缺点 和 源代码实现 等角度进行详细解析。…

【蓝桥杯选拔赛真题77】python计算小球 第十五届青少年组蓝桥杯python选拔赛真题 算法思维真题解析

目录 python计算小球 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python计算小球 第十五届蓝桥杯青少年组python比赛选拔赛真题 一、题目要…

VMware 17 安装RedHat7.0

1.创建新的虚拟机&#xff0c;选择典型安装&#xff0c;【下一步】 2.选择“稍后安装操作系统&#xff08;S&#xff09;”&#xff0c;【下一步】 注&#xff1a;选择“安装程序光盘映像文件&#xff08;iso&#xff09;&#xff08;M&#xff09;”这一项&#xff0c;虚拟机…

事务的原理、MVCC的原理

事务特性 数据库事务具有以下四个基本特性&#xff0c;通常被称为 ACID 特性&#xff1a; 原子性&#xff08;Atomicity&#xff09;&#xff1a;事务被视为不可分割的最小工作单元&#xff0c;要么全部执行成功&#xff0c;要么全部失败回滚。这意味着如果事务执行过程中发生…

别玩了!软考初级网络管理员无非就这23页纸!背完稳!

添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 考点2、子网划分 【考法分析】 本考点的基本考法是给出一个IP网段&#xff0c;同时提出需要划分多少个子网&#xff0c;或每个子网…