学习掘金React进阶实践指南笔记(三)玄学state
1.初步了解state和setState
需要知道类的state,以及this.setState的参数是一个对象与一个回调函数的区别(如果是对象多次调用会合并,如果是函数下一个setState可以依赖上一个的返回值),以及setState的时候的两个回调函数
2.需要知道一次setState后发生了的事情
渲染的过程:1.render 阶段 render 函数执行 -> 2.commit 阶段真实 DOM 替换 -> 3.setState 回调函数执行 callback 。
3.react更新的时候做优化
① pureComponent 可以对 state 和 props 进行浅比较,如果没有发生变化,那么组件不更新。
② shouldComponentUpdate 生命周期可以通过判断前后 state 变化来决定组件需不需要更新,需要更新返回true,否则返回false。
4.setState原理(后续再了解,还没到源码这个境界)
调用 setState 方法,实际上是 React 底层调用 Updater 对象上的 enqueueSetState 方法。(作者从下面两个问题出发)
- enqueueSetState 到底做了些什么?
- React 底层是如何进行批量更新的?
1.enqueueSetState的作用
2.batchUpdate批量更新
中有一个isBatchingEventUpdates开关,表示是否批量更新
在react自己的事件系统中是开启的,如果在js的原生事件中是会打破这个规则的(例如promise和定时器),当然在js的原生事件中也可以打破这个规则,利用unstable_batchedUpdates(了解即可),以及提高优先级的方法 ReactDOM.flushSync,它会优先执行里面的setState
4.面试题:类组件中的 setState 和函数组件中的 useState 有什么异同?
学习掘金React进阶实践指南笔记(三)玄学state相关推荐
- [MBSE]sysml实践指南第三版阅读笔记(一)
SysML实践指南(第三版)阅读笔记(一) 作为入门前的基础知识了解 文章目录 SysML实践指南(第三版)阅读笔记(一) 前言 作者简介 一.概览 总结 前言 系统工程是为复杂工程问题开发解决方案的 ...
- [CoreOS 转载] CoreOS实践指南(三):系统服务管家Systemd
转载:http://www.csdn.net/article/2015-01-08/2823477 摘要:CoreOS是采用了高度精简的系统内核及外围定制的操作系统.ThoughtWorks的软件工程 ...
- CoreOS实践指南(三):系统服务管家Systemd
[编者按]作为一个操作系统,CoreOS 采用了高度精简的系统内核及外围定制,将许多原本需要复杂人工操作或者第三方软件支持的功能在操作系统级别进行了实现,同时剔除了其他对于服务器系统非核心的软件,比如 ...
- 深度学习实践指南(三)—— 参数(超参)及数据集的处理
0. 超参 maximum number of epochs learning rates network architecture 1. 参数的维度信息 对于 CIFAR-10 的图像识别问题而言, ...
- 区块链技术指南笔记(三):区块链运作的核心技术
前言 在学习区块链的时候,有很多知识点,作为读者的我们不能第一时间去消化它(也没必要第一遍就弄懂),某些方面的设计思想看的也是一知半解.我遇到这种情况,一般会将书多看几遍,再去寻找各个知识点之间的关系 ...
- Pr零基础入门指南笔记三-------------视频效果与转场
目录 精剪第一步--视频效果与转场 1.三大面板 2.位置 3.效果库 4.常用视频效果 [干货]PR零基础入门指南第四集:PR常用的效果和转场,视频防抖.宽银幕效果.设置默认效果等_哔哩哔哩_bil ...
- 机器学习实践指南(三)—— 算法的调试
机器学习算法的调试 -- 梯度检验(Gradient Checking) (1)复杂的矩阵运算时,维度间的关系是否符合要求,动手推一下便知.
- 入门学习Nginx代理服务器?就看这篇Nginx进阶学习最佳配置实践指南
前置基础知识学习 1.Nginx基础安装与配置详细 https://blog.weiyigeek.top/2019/9-1-121.html 2.Nginx进阶学习之最佳配置实践指南 https:// ...
- 大规模敏捷实践指南(四):SAFe中的特殊迭代-Innovation and Planning (IP)迭代
在SAFe中,每个PI都需要交付一定的价值.PI的执行过程中,各个敏捷团队致力于实现PI计划会中承诺的PI目标.PI过程中的每个敏捷迭代都很重要,每个迭代都承担了和团队相符的工作量,敏捷团队大多数时间 ...
最新文章
- 2022-2028年中国再生金属行业投资分析及前景预测报告
- Ural 1018 (树形DP+背包+优化)
- 益老而弥坚:软件开发哲学反思录
- 【 FPGA 】Vivado和ISE设计流程比较(重点是Vivado IDE)
- web前端面试题:20道做完信心嫉妒膨胀的测试题
- 【Tika基础教程之一】Tika基础教程
- 5分钟内Google App Engine上的Vaadin App
- html css 知识回顾2
- contes 7.6安装后网络问题解决方案
- 生成base64二维码带logo
- 从头开始聊P问题、NP问题与NPC问题
- win10系统安装sql不上服务器,win10安装sql2000没有反应怎么办_win10安装不了sql2000的解决方法...
- BurpSuite+Proxifer 抓取PC客户端HTTP数据包
- python将图片base流保存为图片文件
- 01.JavaSwing(概述)
- Everyone Do this at the Beginning!!--kaggle数据预处理-超详细的解说
- 概念:蓝筹主板创业板新三板科创板
- 网页版第三方登录操作——微信登录
- 微信小程序 uChars统计图
- IHERB上待产包准备指南-妈妈篇