为什么 useState 要使用数组而不是对象?
解构赋值
数组依次排序,可以随便命名
对象不行,没有次序
状态是同步还是异步?
-
React 17 的 legacy 模式 或者更低版本,同步异步要看调用的方式
-
异步(batchedUpdate)
- setState 在当前任务中执行
-
state 同步更新
-
定时器、事件、网络请求类似的异步任务去执行
- 因为 isBatchingEventUpdate 已经变成了 false
-
-
-
在React18之后,默认所有的操作都被放到了批处理中(异步处理)
-
如果希望代码可以同步拿到,则需要执行特殊的flushSync操作:
import { flushSync } from "react-dom"; changeText() { flushSync(() => { this.setState({ message: "Hello React", }); }); console.log(this.state.message); // Hello React }