学习掘金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 方法。(作者从下面两个问题出发)

  1. enqueueSetState 到底做了些什么?
  2. React 底层是如何进行批量更新的?

1.enqueueSetState的作用
在这里插入图片描述

2.batchUpdate批量更新
中有一个isBatchingEventUpdates开关,表示是否批量更新
在react自己的事件系统中是开启的,如果在js的原生事件中是会打破这个规则的(例如promise和定时器),当然在js的原生事件中也可以打破这个规则,利用unstable_batchedUpdates(了解即可),以及提高优先级的方法 ReactDOM.flushSync,它会优先执行里面的setState

4.面试题:类组件中的 setState 和函数组件中的 useState 有什么异同?

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值