得到的结果是111,而不是我们期朢中的222而一般我们的解决办法都是,传入第二个回调函数
第二个回调函数就会在异步执行完成之后触发。
很多人都觉得这样的异步操作,使得代码写起来更麻烦的但是你知道react为什么要把setState设置成异步的吗??
在react的中,更新state的操作即setState,会把修改state的更新操作放到┅个队列中,而不会马上执行当组件进入可更新state的状态的时候,会在队列中把所有可以更新的state进行更新操作即实现了 高效地批量更新state
舉一个简单的例子,有一个对话框组件假如更新的同步的,那么收到信息的瞬间就去更新state数据。此时如果有很多信息一直发过来然後每次收到一条信息,就去同步更新一次会浪费了好多性能,而且由于一直更新state导致组件也一直被重新渲染,用户的体验也会很不好
而更新是异步的话,也仅仅有几毫秒的延迟用户也几乎感觉不到,并且可以将很多的更新一次性的批量更新性能也会大大提升