组件更新的底层逻辑

第一种更新:组件更新的逻辑,当修改了相关状态,组件会更新

1.触发shouldComponentUpdate 周期函数:是否允许更新

shouldComponentUpdate(nextProps, nextState) {
// nextState: 存储要修改的最新状态
// this. state:存储的还是修改前的状态「此时状态还没有改变」
console. log(this.state, nextState); .
//此周期函数需要返回t rue/false
//返回true: 允许更新,会继续执行下一-个操作
//返回false: 不允许更新,接下来啥都不处理
return true;
}

2.触发时机componentWillUpdate周期函数:更新之前
此周期函数也是不安全的,在这个阶段,状态还没有被修改

3.修改状态值/属性值「让this. state. xxx改为最新的值」

4.触发render周期函数:组件更新

按照最新的状态/属性,把返回的JSX编译为virtua LDOM,和上一次渲染出来的virtua LDOM进行对比「DOM-DIFF」,把差异的部分进行渲染「渲染为真实的DOM」

5.触发componentD idUpdate周期函数:组件更新完毕

特殊说明:如果我们是基于this . forceUpdate()强制更新视图,会跳过shou ldComponentUpdate周期函数的校验,直接从WillUpdate开始进行更新,也就是:视图一定会触发更新!!!哪怕我们数据没有改变也会直接更新!!!!


第二种更新:父组件调用子组件

父子组件嵌套,处理机制上遵循深度优先原则:父组件在操作中,遇到子组件,一定是把子组件处理完,父组件才能继续处理

父组件第一次渲染
父willMount >父render->子willMount >子render >子didMounty >父didMount

父组件更新:
父shouldUpdate ->父willUpdate ->父render->子willReceiveProps ->子shouldUpdate ->子shoudComponentUpdate(如果为true才继续后面的步骤)->子willUpdate ->子render ->子didUpdate->父didUpdate

在这里插入图片描述


类组件和函数组件对比

函数组件是“静态组件”:
组件第一次渲染完毕后,无法基于"内部的某些操作”让组件更新,无法实现“自更新”;但是,如果调用它的父组件更新了,那么相关的子组件也
定会更新,可能传递最新的属性值进来;
1.函数组件具备:属性…「其他状态等内容几乎没有」
2.优势:比类组件处理的机制简单,这样导致函数组件渲染速度更快! !

类组件是“动态组件”:
组件在第一渲染完毕后,除了父组件更新可以触发其更新外,我们还可以通过: this. setState修改状态 或者this.forceUpdate 等方式,让组件实现"自更新”! !
1.类组件具备:属性、状态、周期函数、ref… r几乎组件应该有的东西它都具备」
2.优势:功能强大! !

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

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

相关文章

闲置APP小程序开发 你不喜欢的可能正是别人需要的

生活中我们常常会产生各种闲置物品,尤其是对于有宝宝的家庭来说,孩子小的时候可能会添置各种玩具、婴儿车或者是别的用品,随着孩子渐渐长大,这些东西都用不上了,但是扔了又觉得很可惜,留着又占地方&#xf…

RocketMQ5.x版本延迟消息被重放问题调查

一、问题 由于目标计划是将集群从4.9.x逐步升级至5.x,故目前先对一些不重要的集群进行升级测试。 但是在4.x的broker陆续升级至5.x的过程中,发现了延迟消息被重放的问题。 具体如下: 在升级时刷新后台监控,发现竟然有写入量: 即…

基于组件化开发思想的微信小程序开发框架

跨端框架的出现为小程序应用的开发带来了巨大的便利性和灵活性。它们提供了统一的开发方式、代码复用的能力,并且与小程序容器技术紧密结合,实现了一次编码、多端运行的目标。开发者可以根据项目需求和团队技术栈选择合适的跨端框架,从而在不…

11 GMM——高斯混合模型

文章目录 11 GMM——高斯混合模型11.1 模型介绍11.2 通过MLE估计参数11.3 EM求解 11 GMM——高斯混合模型 11.1 模型介绍 从几何角度来说: 高斯混合模型表示:加权平均——由多个高斯分布混合叠加而成,如图 公式可以表达为: p…

基于XC7Z100的PCIe采集卡(GMSL FMC采集卡)

GMSL 图像采集卡 特性 ● PCIe Gen2.0 X8 总线; ● 支持V4L2调用; ● 1路CAN接口; ● 6路/12路 GMSL1/2摄像头输入,最高可达8MP; ● 2路可定义相机同步触发输入/输出; 优势 ● 采用PCIe主卡与FMC子…

安卓大作业 书籍列表APP

系列文章 安卓大作业 书籍列表APP 文章目录 系列文章1.背景2.功能3. 源代码获取 1.背景 我做的项目是一个可以查看到书籍列表以及详情效果的内容,主要使用到的技术有Intent数据传递以及数据库存储的应用,其次使用的组…

Qt线程的几种使用方法

目录 引言使用方法重写QThread::run()moveToThreadQRunnable使用QtConcurrent使用 完整代码 引言 多线程不应该是一个复杂而令人生畏的东西,它应该只是程序员的一个工具,不应该是调用者过多记忆相关概念,而应该是被调用方应该尽可能的简化调…

Linux教程——常见Linux发行版本有哪些?

新手往往会被 Linux 众多的发行版本搞得一头雾水,我们首先来解释一下这个问题。 从技术上来说,李纳斯•托瓦兹开发的 Linux 只是一个内核。内核指的是一个提供设备驱动、文件系统、进程管理、网络通信等功能的系统软件,内核并不是一套完整的…

网络安全从业人员2023年后真的会被AI取代吗?

随着ChatGPT的火爆,很多人开始担心网络安全从业人员会被AI取代。如果说网络安全挖洞的话,AI可能真的能取代。但是网络安全不仅仅只是挖洞,所以AI只是能缓解网络安全人员不足的情况,但是是不会取代人类的作用的。 就拿最近很火的C…

【线性代数】

求解线性方程组 右乘向量/矩阵 把左边的矩阵拆成一个个列向量,右边的向量表示对左边列向量组的线性组合。 [ c o l 1 c o l 2 c o l 3 ] [ 3 4 5 ] [ 3 c o l 1 4 c o l 2 5 c o l 3 ] \left[\begin{array}{c} col_{1} & col_{2} & col_{3} \end{array}\…

WPS表格处理

wps表格中公式出来的内容如何转为纯文本 选中公式算出的结果区域,复制,在原区域上右键,选择性粘贴为数值,就转成文本了,当然公式也就消除了。 wps表格如何设置整列公式? 1、先来看看下面这个例子需做出商…

Git、Github、Gitee的区别

⭐作者主页:逐梦苍穹 ⭐所属专栏:Git 目录 1、Git2、Gitee3、GitHub 什么是版本管理?   版本管理是管理各个不同的版本,出了问题可以及时回滚。 1、Git Git是一个分布式版本控制系统,用于跟踪和管理代码的变化。它是…

【Ubuntu系统内核更新与卸载】

【Ubuntu系统内核更新与卸载】 1. 前言2. 内核安装2.1 系统更新2.2 官网下载 3. 内核卸载3.1 需求分析3.2 卸载方法 1. 前言 我们在搭建环境时常常遇到内核版本不匹配的问题,需要我们安装新的内核版本;有时又会遇到在安装软件时报错boot空间已满无法安装…

2021年国赛高教杯数学建模B题乙醇偶合制备C4烯烃解题全过程文档及程序

2021年国赛高教杯数学建模 B题 乙醇偶合制备C4烯烃 原题再现 C4 烯烃广泛应用于化工产品及医药的生产,乙醇是生产制备 C4 烯烃的原料。在制备过程中,催化剂组合(即:Co 负载量、Co/SiO2 和 HAP 装料比、乙醇浓度的组合&#xff0…

(六)CSharp-CSharp图解教程版-委托

一、委托概述 1、什么是委托 委托和类一样,是一种用户定义类型(即是一种类,所以也是一个引用类型)。在它们组成的结构方面区别是,类表示的是数据和方法的集合,而委托则持有一个或多个方法。 可以把 deleg…

HNU-操作系统OS-作业1(4-9章)

这份文件是OS_homework_1 by计科2102 wolf 202108010XXX 文档设置了目录,可以通过目录快速跳转至答案部分。 第四章 4.1用以下标志运行程序:./process-run.py -l 5:100,5:100。CPU 利用率(CPU 使用时间的百分比)应该是多少?为什么你知道这一点?利用 -c 标记查看你…

[230604] 听力TPO66汇总·上篇| C1 L1 C2|10:20~12:00

目录​​​​​​​ Science Fiction And Sci-fi-C1 错题分析 C1-3 细节双选题 C1 精听练习 做题笔记 Financial Advice-C2 全对 C2 精听练习 Sleep-L1 错题分析 L1-4 细节题 L1-5 细节双选题 L1 精听练习 做题笔记 词汇:http://t.csdn.cn/Zhuws 两篇对…

Linux进程、用户、权限命令

进程管理命令 进程和程序的区别 1 程序是静态概念,本身作为一种软件资源长期保存;而进程是程序的执行过程,它是动态概念,有一定的生命期,是动态产生和消亡的。 2 程序和进程无一一对应关系。一个进程在活动中可有顺序…

软件测试03:软件工程和软件生命周期

软件测试03:软件工程和软件生命周期 软件危机 软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。 软件工程 基本软件危机对于计算机发展的阻碍,1968年&#xff0…

一分钟学一个 Linux 命令 - tar

前言 大家好,我是 god23bin。今天给大家带来的是 Linux 命令系列,每天只需一分钟,记住一个 Linux 命令不成问题。今天,我们要介绍的是一个常用且强大的命令:tar。 什么是 tar 命令? tar 是 tape archive…