【框架类】—Vue3的生命周期

一、生命周期的相关函数

  1. onBeforeMount 页面渲染之前 和 onMounted渲染之后 示例
<template><div class="test"><div ref="el">组件初始化</div></div>
</template>
<script>
//按需引入所需方法
import { ref, onBeforeMount, onMounted} from 'vue'
export default {name:'about',setup(){const el = ref(null)// 组件(DOM节点渲染)挂载之前调用, 响应式数据已经设置完毕onBeforeMount(()=> {console.log('组件挂载之前调用', el.value)})// DOM节点加载完成执行onMounted(()=> {console.log('DOM节点加载完成执行', el.value)})return {el}}
}
</script>
<style></style>

在这里插入图片描述

  1. onBeforeUpdate DOM视图更新之前和 onUpdated DOM视图更新完成后
<template><div class="test"><button id="count" @click="count++"> 组件更新{{ count }}</button>></div>
</template>
<script>
//按需引入所需方法
import { ref, onBeforeUpdate, onUpdated} from 'vue'
export default {name:'about',setup(){const count = ref(0)// DOM视图更新之前调用onBeforeUpdate(()=> {console.log('DOM视图更新之前调用')})// DOM视图更新完成后调用onUpdated(()=> {// 文本内容应该与当前的 `count.value` 一致console.log('DOM视图更新完成后调用', document.getElementById('count').textContent)})return {count}}
}
</script>
<style></style>

在这里插入图片描述

  1. onErrorCaptured 子孙组件的错误时调用
    父组件
<template><div class="test"><test1 ref="test1"></test1></div>
</template>
<script>
//按需引入所需方法
import { ref, onErrorCaptured} from 'vue'
import test1 from './test1.vue'
export default {name:'about',components: {test1},setup(){// 当捕获一个来自子孙组件的错误时被调用onErrorCaptured(()=> {console.log('当捕获一个来自子孙组件的错误时被调用')})return {}}
}
</script>
<style></style>

子组件

<template><div class="">测试</div>
</template><script>
export default {setup () {// 因为test没有声明,test一定会报错console.log('test', test)}
}
</script><style></style>

在这里插入图片描述
3-1 子孙组件错误触发的来源列表
在这里插入图片描述
4. onBeforeUnmount 组件卸载前 和 onUnmounted 组件卸载后

<template><div class="test"><button @click="jumpRoute">跳转路由</button></div>
</template>
<script>
//按需引入所需方法
import { ref, onBeforeUnmount, onUnmounted} from 'vue'
import { useRouter } from 'vue-router'
export default {name:'about',setup(){const router = useRouter()function jumpRoute () {router.push({ name: 'promotionApply', query: {name: '张三'} })}// 组件卸载之前调用 ,路由跳转前触发onBeforeUnmount(()=> {console.log('组件卸载前')})// 组件实例被卸载之后调用,路由跳转前触发onUnmounted(() => {// 常用于手动清除副作用,计时器、DOM事件监听器或者与服务器的连接console.log('组件卸载后')})return {jumpRoute}}
}
</script>
<style></style>

在这里插入图片描述
5. onRenderTracked 仅在开发模式下可用, 组件渲染过程中,追踪到响应式依赖时调用

<template><div class="test"><div ref="el">组件初始化</div><button id="count" @click="count++"> 组件更新{{ count }}</button>></div>
</template>
<script>
//按需引入所需方法
import { ref, onBeforeMount, onRenderTracked,onMounted} from 'vue'
export default {name:'about',setup(){const el = ref(null)const count = ref(0)// 组件挂载之前调用, 响应式数据已经设置完毕onBeforeMount(()=> {console.log('组件挂载之前调用', el.value)})// 仅在开发模式下可用, 组件渲染过程中,追踪到响应式依赖时调用onRenderTracked(()=> {console.log('仅在开发模式下可用, 组件渲染过程中,追踪到响应式依赖时调用')})// DOM节点节点加载完成onMounted(()=> {console.log('DOM节点节点加载完成', el.value)})return {count,el}}
}
</script>
<style></style>

在这里插入图片描述
6. onRenderTriggered 仅在开发模式下可用, 组件渲染过程中,响应式数据触发更新时调用

<template><div class="test"><div ref="el">组件初始化</div><button id="count" @click="count++"> 组件更新{{ count }}</button>></div>
</template>
<script>
//按需引入所需方法
import { ref, onBeforeMount, onRenderTracked,onMounted} from 'vue'
export default {name:'about',setup(){const el = ref(null)const count = ref(0)// 组件挂载之前调用, 响应式数据已经设置完毕onBeforeMount(()=> {console.log('组件挂载之前调用', el.value)setTimeout(() => {count.value = 100}, 0);})// 仅在开发模式下可用, 组件渲染过程中,追踪到响应式依赖时调用onRenderTracked(()=> {console.log('仅在开发模式下可用, 组件渲染过程中,追踪到响应式依赖时调用')})// DOM节点节点加载完成onMounted(()=> {console.log('DOM节点加载完成', el.value, count.value)})// 仅在开发模式下可用, 组件渲染过程中,响应式数据触发更新时调用onRenderTriggered(()=> {console.log('仅在开发模式下可用,组件渲染过程中, 响应式数据触发更新时调用', count.value)})// DOM视图更新之前调用onBeforeUpdate(()=> {console.log('DOM视图更新之前调用')})// DOM视图更新完成后调用onUpdated(()=> {// 文本内容应该与当前的 `count.value` 一致console.log('DOM视图更新完成后调用', document.getElementById('count').textContent)})return {count,el}}
}
</script>
<style></style>

在这里插入图片描述

二、生命周期函数运行顺序

  1. onBeforeMount DOM节点渲染之前触发, 响应式数据已设置完毕
  2. onRenderTracked DOM节点渲染过程中, 追踪到页面有依赖响应式数据时触发 仅开放模式下可以
  3. onMounted DOM节点渲染完成后触发
  4. onRenderTriggered 响应式数据触发更新时调用
  5. onBeforeUpdate DOM视图更新之前调用
  6. onUpdated DOM视图更新完成后调用
  7. onErrorCaptured 当捕获一个来自子孙组件的错误时被调用
  8. onBeforeUnmount 路由跳转时,卸载当前组件之前触发
  9. onUnmounted 路由跳转时,卸载当前组件之后触发

三、 其他生命周期函数

  1. onActivated() 若组件实例是 缓存树的一部分,当组件被插入到 DOM 中时调用。
  2. onDeactivated() 若组件实例是 缓存树的一部分,当组件从 DOM 中被移除时调用。
  3. onServerPrefetch() 在组件实例在服务器上被渲染之前调用 , 仅服务器端使用

因为实际使用频率较少,所以没有列举相关实例,有需要的同学可以根据官方文档,自行再实际代码中测试

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

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

相关文章

Redux - Redux在React函数式组件中的基本使用

文章目录 一&#xff0c;简介二&#xff0c;安装三&#xff0c;三大核心概念Store、Action、Reducer3.1 Store3.2 Reducer3.3 Action 四&#xff0c;开始函数式组件中使用4.1&#xff0c;引入store4.1&#xff0c;store.getState()方法4.3&#xff0c;store.dispatch()方法4.4&…

04-4_Qt 5.9 C++开发指南_时间日期与定时器

文章目录 1. 时间日期相关的类2. 源码2.1 可视化UI设计2.2 dialog.h2.3 dialog.cpp 1. 时间日期相关的类 时间日期是经常遇到的数据类型&#xff0c;Qt 中时间日期类型的类如下。 QTime:时间数据类型&#xff0c;仅表示时间&#xff0c;如 15:23:13。 QDate:日期数据类型&…

虹科方案 | 汽车总线协议转换解决方案

汽车总线&#xff1a; 汽车总线是一种用于在车辆电子系统中传输数据和控制信息的通信系统。它允许不同的电子控制单元&#xff08;ECU&#xff09;在车辆中相互通信&#xff0c;协调各个系统的操作&#xff0c;以实现功能的集成和协同工作。 在现代汽车中&#xff0c;综合通信…

微信公众号模板消息推送测试Python版无需服务器-保姆级教程

手上有个项目&#xff0c;是服务器挂着自动化的爬虫的&#xff0c;但我用的那个IP代理商没有用尽报警&#xff0c;导致几次IP用尽&#xff0c;程序爬不到数据&#xff0c;进程死循环了。之前想过发邮箱提醒我&#xff0c;但是邮箱把又不及时&#xff0c;老忘记看&#xff0c;因…

C语言必会题目(1)

W...Y的主页 &#x1f60a; 代码仓库分享❤️ 在学习语言时&#xff0c;最重要的就是练习&#xff0c;光听不练假把式。下面我就推荐一些C语言必会的题。 执行下面程序&#xff0c;正确的输出是&#xff08; &#xff09; int x5,y7; void swap() { int z; zx; xy; yz; } int…

数字孪生三剑客来了!MapGIS Earth for Unreal的自述

嗨&#xff0c;大家好&#xff01;我的名字叫MapGIS Earth for Unreal&#xff0c;是MapGIS数字孪生平台产品家族的一员。提起我&#xff0c;大家可能不熟悉&#xff0c;但是提起数字孪生&#xff0c;想必大家倍感兴趣。 数字孪生是充分利用物理模型、传感器更新、运行历史等数…

【git】解决遇到的问题

目录 一、error: RPC failed; curl 6 OpenSSL SSL_read: Connection was reset, errno 10054 二、error: RPC failed; curl 6 OpenSSL SSL_read: Connection was reset, errno 10054 一、error: RPC failed; curl 6 OpenSSL SSL_read: Connection was reset, errno 10054 报…

2023最新Windows编译ffmpeg详细教程,附msys2详细安装配置教程

安装MSYS2 msys2是一款跨平台编译套件&#xff0c;它模拟linux编译环境&#xff0c;支持整合mingw32和mingw64&#xff0c;能很方便的在windows上对一些开源的linux工程进行编译运行。 类似的跨平台编译套件有&#xff1a;msys&#xff0c;cygwin&#xff0c;mingw 优势&…

MySQL8的特性-MySQL8知识详解

MySQL是一个多用户、多线程的SQL数据库服务器。SQL&#xff08;结构化查询语言&#xff09;是世界上最流行和标准化的数据库语言。下面是MySQL的特性。 1、开源性&#xff1a;MySQL是一个开源的关系型数据库管理系统&#xff0c;可以免费使用和修改。 2、可靠性&#xff1a;M…

DOCKER的容器

1. 什么是Container&#xff08;容器&#xff09; 要有Container首先要有Image&#xff0c;也就是说Container是通过image创建的。 Container是在原先的Image之上新加的一层&#xff0c;称作Container layer&#xff0c;这一层是可读可写的&#xff08;Image是只读的&#xff0…

TOMCAT部署及优化(Tomcat配置文件参数优化,Java虚拟机(JVM)调优)

TOMCAT tomcat &#xff1a;是一个开放源代码的web应用服务器&#xff0c;基于java代码开发的。也可以理解为tomacat就是处理动态请求和基于java代码的页面开发。可以在html当中写入java代码&#xff0c;tomcat可以解析html页面当中的java&#xff0c;执行动态请求&#xff0c;…

Nvm安装与使用

【1】nvm下载地址 https://github.com/coreybutler/nvm-windows/releases 选择的是nvm-setup.exe 【2】安装nvm 打开cmd&#xff0c;输入命令nvm -v 查看nvm版本&#xff0c;出现如下界面说明成功 【3】nodejs 安装与管理 打开CMD命令&#xff0c;以管理员权限运行 1、…

如何维护自己的电脑

目录 1、关于电脑选择的建议 1.1、价格预算 1.2、明确需求 1.3、电脑配置 1.4、分辨率 1.5、续航能力 1.6、品牌选择 1.7、用户评测 1.8、各个电商平台对比 1.9、最后决策 2、我的选择 3、电脑保养 3.1 外部清洁 3.2 安装软件 3.3 优化操作系统 3.4 维护硬件设…

那些年的golang开发经验记录

goland 问题CreateProcess error216, 该版本的 %1 与你运行的 Windows 版本不兼容。请查看计算机的系统信息&#xff0c;然后联系软件发布者 Cannot run program "......" (in directory "D:\project\go\awesomeProject\src\test"): CreateProcess error2…

Linux系列:从0到1用Docker部署springboot项目

目录 1.前提条件 2.编写DockerFile镜像文件 3.打包SpringBoot项目 4.通过软件Xftp进行传输&#xff08;*&#xff09; 1.点击“文件-新建”​编辑 5.操作远程主机 1.docker构建 2.容器运行 6.容器的关闭和删除 1.前提条件 Linux、docker、xftp的安装、一台可以访问的远…

GIL 锁或将在 CPython 中成为可选项

哈喽大家好&#xff0c;我是咸鱼 几天前有媒体报道称&#xff0c;经过多次辩论&#xff0c;Python 指导委员会打算批准通过 PEP 703 提案&#xff0c;让 GIL&#xff08;全局解释器&#xff09;锁在 CPython 中成为一个可选项 PEP 703 提案主要目标是使 GIL 变成可选项&#…

flink如何监听kafka主题配置变更

背景&#xff1a; 从前一篇文章我们知道flink消费kafka主题时是采用的手动assign指定分区的方式&#xff0c;这种消费方式是不处理主题的rebalance操作的&#xff0c;也就是消费者组中即使有消费者退出或者进入也是不会触发消费者所消费的分区的&#xff0c;那么疑问就来了&am…

【CSS】背景图定位问题适配不同机型

需求 如图, 实现一个带有飘带的渐变背景 其中头像必须显示飘带凹下去那里 , 需要适配不同的机型, 一不下心容易错位 实现 因为飘带背景是版本迭代中更新的, 所以飘带和渐变背景实则两个div 飘带切图如下 , 圆形部分需要契合头像 <view class"box-bg"><…

【脚踢数据结构】链表(1)

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言,Linux基础,ARM开发板&#xff0c;软件配置等领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff01;送给自己和读者的一句鸡汤&#x1f914;&…