React面试题之setState的执行机制

setState 是 React 中用于更新组件状态的方法。

1. setState 的基本用法

在 React 类组件中,你可以使用 setState 来更新组件的状态。setState 接受一个对象或一个返回对象的函数作为参数

2. 合并状态更新

当调用 setState 时,React 不会立即更新 this.state。相反,React 会将状态更新请求放入队列中,并进行合并。

复制代码
this.setState({ count: 1 });
this.setState({ count: 2 });

3.同步异步

setState在合成事件和生命周期函数中是异步的,在原生事件和定时器中都是同步的。

setState本身不分同步或者异步,而是取决于是否处于batch update中。组件中的所有函数在执行时临时设置一个变量isBatchingUpdates = true,当遇到setState时,如果isBatchingUpdates是true,那么setState就是异步的,如果是false,那么setState就是同步的。那么什么时候isBatchingUpdates会被设置成false呢?

1当函数运行结束时isBatchingUpdates = false

2 当函数遇到setTimeout、setInterval时isBatchingUpdates = false

3 当dom添加自定义事件时isBatchingUpdates = false

相关推荐
@PHARAOH23 分钟前
HOW - Kratos 入门实践(二)- 概念学习
前端·微服务·go
We་ct4 小时前
LeetCode 77. 组合:DFS回溯+剪枝,高效求解组合问题
开发语言·前端·算法·leetcode·typescript·深度优先·剪枝
KerwinChou_CN5 小时前
什么是流式输出,后端怎么生成,前端怎么渲染
前端
爱上妖精的尾巴5 小时前
8-18 WPS JS宏 正则表达式-边界匹配
开发语言·javascript·正则表达式·wps·jsa
爱上妖精的尾巴5 小时前
8-20 WPS JS宏 正则表达式-懒惰匹配
服务器·前端·javascript
网络点点滴5 小时前
组件通信props方式
前端·javascript·vue.js
二十雨辰5 小时前
[小结]-线上Bug监控
前端·bug
前端技术5 小时前
【鸿蒙实战】从零打造智能物联网家居控制系统:HarmonyOS Next分布式能力的完美诠释
java·前端·人工智能·分布式·物联网·前端框架·harmonyos
CHU7290355 小时前
指尖践行环保——旧衣服回收小程序前端功能玩法详解
前端·小程序
weixin_443478515 小时前
flutter组件学习之Flex / Expanded弹性布局组件
javascript·学习·flutter