关于多次调用setState的更新问题

来源:3-14 【异步处理】setState的异步开发

qq_慕勒5016658

2022-08-10

之前在哪看过关于setState的更新逻辑,大概内容就是当前state的setState重复多次执行的时候,会对比该state的更新数据从而将多次的state整合成单次的state,相同的情况只执行一次,不同的情况则以最新的一次setState为主
而对上一次preState进行更新的情况,因为每一次更新的state对象都不一样,所以可以多次执行
不知道上面的描述是否正确

下面的代码则只会执行this.state.count + 3

 this.setState({ count: this.state.count + 1 }, () => {
   console.log(this.state.count)
 })
 this.setState({ count: this.state.count + 2 }, () => {
   console.log(this.state.count)
 })
 this.setState({ count: this.state.count + 3 }, () => {
   console.log(this.state.count)
 })
写回答

1回答

阿莱克斯刘

2022-08-14

是的,react的setState比较奇怪,正如你所说,他会按照一定的算法把多次setState整合为一次操作,从而提高ui的渲染效率。这种操作会给人一种setState是异步操作的错觉,但更准确来说setState其实是一种伪异步操作。
0
1
qq_慕勒5016658
非常感谢!
2022-08-15
共1条回复

React18 系统精讲 结合TS打造旅游电商平台

React18 精讲 + 结合 TS 实战 + 热门业务开发,获取必备技能

1993 学习 · 1015 问题

查看课程