vue3之生命周期

 Vue3之生命周期

主要Vue生命周期事件被分为两个钩子,分别在事件之前和之后调用,vue应用程序中有4个主要事件(8个钩子):

  • 创建 ---- 在组建创建时执行
  • 挂载 ---- DOM被挂载时执行
  • 更新 ---- 当响应数据被修改时执行
  • 销毁 ---- 在元素被销毁之前立即执行

 

在这里,beforecreate和created被setup方法本身所替代,我们在在setup中将会访问到9个生命周期:

  • onBeforeMount:在挂载之前被调用,渲染函数render首次被调用
  • onMounted:组件挂载时调用
  • onBeforeUpdate:数据更新时调用,发生在虚拟DOM打补丁之前。
  • onUpdated:因数据更改导致的虚拟DOM重新渲染和打补丁时调用
  • onBeforeUnmount:在卸载组件实例之前调用,此阶段的实例依旧是正常的。
  • onActivated:被keep-alive缓存的组件激活时调用
  • onDeactivated:被keep-alive缓存的组件停用时调用

onErrorCaptured:当捕获一个来自子孙组件的错误时被调用,有三个参数:错误对象、发生错误的组件实例、一个包含错误来源信息的字符串;此钩子会返回false来阻止改错误继续向上传播。
 

<script>
import { onMounted } from 'vue'export default {setup(){onMounted(()=>{console.log('生命周期----onMounted')})}}
</script>

在组合API中,使用setup()方法替换了beforeCreate和created,那么在这两个生命周期中的方法将放在setup中执行

beforeMount()和onBeforeMount()

在组件DOM实际渲染之前调用,此时根元素还不存在,在选项API中,可使用this.$el来 访问;在组合API中,想访问的话就必须在根元素上使用ref。

//选项API
beforeMount(){console.log('beforeMount',this.$el)
}//组合API
<template><div ref="root">Hello~</div>
</template>import {ref,onBeforeMount} from 'vue'export default{setup(){const root = ref(null)onBeforeMount(()=>{console.log('onBeforeMount',root.value)})return {root}},beforeMount() {console.log('beforeMount',this.$el)}}

mounted()和onMounted()

在组件的第一次选然后调用,此时元素可用,允许直接DOM访问。

import { ref, onMounted } from 'vue'export default {// 组合 APIsetup() {    const root = ref(null)onMounted(() => {console.log(root.value)})return {root}},// 选项 API mounted() {console.log(this.$el)}} 

 

beforeUpdate()和onBeforeUpdate()

数据更新时调用,发生在虚拟DOM打补丁之前。

  • beforeUpdate对于跟踪对组件的编辑次数,甚至跟踪创建撤销功能的操作很有用。
  • updated()和onUpdated()
  • DOM更新后,updated的方法就会调用
  • beforeUnmount()和onBeforeUnmounted()

在卸载组件实例之前调用

//选项API
export default{
mounted(){console.log('mounted')
},
beforeUnmount(){console.log('unmount')
}
}//组合API
import { onMounted,onBeforeUnmount } from 'vue'
export default {setup(){onMounted(()=>{console.log('mount')})onBeforeUnmount(()=>{console.log('unmount')})}
}

unmounted()和onUnmounted()

卸载组件实例后调用,调用此钩子时,组件实例的所有指令都被解除绑定,所有事件侦听器都被移除,所有子组件实例被卸载。

import { onUnmouted } from 'vue'export default {//组合APIsetup(){onUnmounted(()=>{console.log('unmounted')})},//选项APIunmounted(){console.log('unmounted')}
}

actived()和onActivated()

被keep-alive缓存的组件激活时调用

deactivated()和onDeactivated()

被keep-alive缓存的组件停用时调用。

vue3还提供了两个可用于调试目的的钩子

  • onRenderTracked
  • onRenderTriggered

这两个事件都带有一个debugger event,该事件会告诉你哪个操作跟踪了组件以及该操作的目标对象和键。

export default {onRenderTriggered(e) {debugger// 检测什么依赖造成了组件的重新渲染}
}

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

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

相关文章

深度学习模型部署(十一)TensorRT写Plugin

什么是plugin & 有什么用&#xff1f; TensorRT的一种机制&#xff0c;以.so的形式插入到网络中实现某些算子。 作用&#xff1a; 实现TensorRT不支持的层替换性能不好的层手动进行图优化算子融合 写Plugin就是自己写算子的CUDA kernel实现。 Plugin与其他layer之间无法…

【数据结构】顺序表和链表详解顺序表和链表的实现

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;数据结构_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1.线性表 1.1 顺序表 1.1.1 概念及结构 1.1.2 静态顺序表 1.1.3 动态顺序表 1.2 链表 1.2.1 链表的概念及结构 1.2.2 链表…

馆室一体化查档平台制度有哪些

馆室一体化查档平台制度是指图书馆或档案馆在数字化和信息化的背景下&#xff0c;建立起的集查阅、借阅、咨询、文献传递等多项功能于一体的平台制度。下面是一些常见的馆室一体化查档平台制度&#xff1a; 1. 馆藏管理制度&#xff1a;包括图书和档案的采购、编目、分类、整理…

详解rtklib中main函数如何配置文件(下)

目录 一、main函数流程总结 二、分析识别 -k 后如何配置 三、最后传参的数据文件处理方式 一、main函数流程总结 详解rtklib中main函数如何配置文件&#xff08;上&#xff09;-CSDN博客 在这片文章中讲解了rtklib中main函数的整个流程。 &#xff08;1&#xff09;通过…

最长上升子序列

一、题目描述 B3637 最长上升子序列 二、问题简析 2.1 法一&#xff1a; O ( N 2 ) O(N^2) O(N2) 令 d p [ i ] dp[i] dp[i] 以 a i a_i ai​ 结尾的上升子序列的最大长度。 以 a i a_i ai​ 结尾的上升子序列有两种可能&#xff1a; 1、仅有 a i a_i ai​ 一个元素2…

保研复习概率论2

1.什么是随机变量的数学期望&#xff08;expected value&#xff09;&#xff1f; 如果X是离散型随机变量&#xff0c;其分布列为piP{Xxi}(i1,2...)&#xff0c;若级数绝对收敛&#xff0c;则称随机变量X的数学期望存在&#xff0c;并将的和称为随机变量X的数学期望&#xff0…

5.5.7、【AI技术新纪元:Spring AI解码】Redis

Redis Redis 是一款开源(BSD 许可)的内存数据结构存储系统,可用作数据库、缓存、消息代理以及流处理引擎。Redis 提供了诸如字符串、哈希表、列表、集合、带范围查询的有序集合、位图、HyperLogLogs、地理空间索引和流等多种数据结构。 Redis 向量搜索 Redis 向量搜索与查…

【C++】每日一题 位1的个数

编写一个函数&#xff0c;输入是一个无符号整数&#xff08;以二进制串的形式&#xff09;&#xff0c;返回其二进制表达式中数字位数为 ‘1’ 的个数&#xff08;也被称为汉明重量&#xff09;。 #include <iostream> #include <cstdint>int hammingWeight(uint3…

汇编语言中的MVC

一 MVC指令 1&#xff0e;移动字符串指令MVC 移动字符串指令MVC的格式为&#xff1a; MVC D1(L,B1),D2(B2) (移动字符串) 功能&#xff1a;&#xff08;D1&#xff08;B1&#xff09;&#xff09; ← &#xff08;D2&#xff08;B2&#xff09;&#xff09; L个字符 指令的执行…

React面试总结

React中JSX转换为真实Dom的过程 可以从几个大体过程来看 jsx语法解析 jsx语法解析成js代表的对象&#xff0c;即把jsx语法转换为基于js的React.createElement(args1,args2,args3)&#xff0c;args1,args2,args3分别是标签类型、属性和标签内容&#xff0c;主要利用的是babel等…

leetcode 316.去除重复字母

思路&#xff1a;贪心单调栈。 这道题和前几天做的那道“删除k位数字”那道题很像。 这里由于是按照字典序进行输出的&#xff0c;而且删除的地方我们也不知道&#xff0c;是随机的&#xff0c;这个时候其实就应该想到用单调栈进行解答&#xff0c;其实这样才能进行很好的存储…

COPY requires at least two arguments, docker COPY 报错

COPY requires at least two arguments # 使用 Node.js 12.16.0FROM node:12.16.0WORKDIR /appCOPY ..原因&#xff1a;Dockerfile文件COPY后的两个. 要加空格 本内容来源于小豆包&#xff0c;想要更多内容请跳转小豆包 》

【Frida】【Android】01_手把手教你环境搭建

▒ 目录 ▒ &#x1f6eb; 导读开发环境 1️⃣ 环境搭建安装Android模拟器安装Frida CLI安装Frida Server端口重定向&#xff1a;adb forward 2️⃣ 运行测试spwan模式attach模式直接加载脚本 &#x1f4d6; 参考资料 &#x1f6eb; 导读 开发环境 版本号描述文章日期2024-03…

C++按位运算

6.3 按位运算 6.3.1 位运算概述 符号描述运算规则实例&与两个位都为1时&#xff0c;结果才为1。0001&00011,0001&00000,0000&00000000|或两个位都为0时&#xff0c;结果才为0。0001^异或两个位相同为0&#xff0c;相异为1。0001∧00010000,0001∧00001,0000∧…

matlab空间曲线图形

说明&#xff1a;问题来自CSDN-问答板块&#xff0c;题主提问。 需求&#xff1a;如何用子图命令画出平面y2z&#xff0c;z2y与球面x^2y^2z^25相交的空间曲线图形。需要完整代码和结果的图片。 一、先看效果图 二、代码 % 创建figure figure% 创建二维网格&#xff0c;用于定…

element ui实践bug

文章目录 el-table的默认全部展开属性default-expand-all el-table的默认全部展开属性default-expand-all 该属性只有table 初始化时才会生效&#xff0c;后续动态更改无效。 如果想要动态修改default-expand-all 属性&#xff0c;则需要控制table 的重新渲染&#xff0c;可以…

day01_mysql数据类型和运算符_课后练习 - 参考答案

文章目录 day01_mysql_课后练习第1题第2题第3题第4题第5题 day01_mysql_课后练习 第1题 案例&#xff1a; 1、创建数据库day01_test01_library 2、创建表格books 字段名字段说明数据类型允许为空唯一b_id书编号int(11)否是b_name书名varchar&#xff08;50&#xff09;否否…

性能调优专题并发编程专题(持续更新)

一、性能调优专题 MySQL相关 一、深入理解MySQL索引底层数据结构与算法 索引概念&#xff1a;索引是帮助MySQL高效获取数据的排好序的数据结构 索引数据结构&#xff1a; 1、二叉树 缺点&#xff1a;当索引字段有序的时候&#xff0c;不会自动平衡二叉树&#xff0c;数据…

JavaScript单元测试jasmine学习(一)

介绍&#xff1a; jasmine是用于测试JavaScript的一种测试框架,BDD(Behavior Driven Development)行为驱动开发。不依赖于任何其他JavaScript框架&#xff0c;也不需要DOM 准备工作&#xff1a; 1. 首先添加jasmine到自己的项目中 npm install --save-dev jasmine 2. 在项目…

【热门话题】ECMAScript vs JavaScript:理解两者间的联系与区别

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 ECMAScript vs JavaScript&#xff1a;理解两者间的联系与区别1. ECMAScript&am…