useReducer 与 useState 的区别
一句话结论:
useState可以看作是内置了basicStateReducer的useReducer;当状态更新逻辑复杂、需要把“如何更新”显式化时,用useReducer更合适。
1. 相同点
- 都是“入队 update + 调度 render + 在 render 中计算新 state”
- 都有 queue、pending/baseQueue、lane 等机制
2. 不同点
useState:action 要么是值,要么是(prev) => nextuseReducer:action 完全自定义,通过 reducer 计算 nextState
3. 什么时候选谁
- 小状态、简单更新:
useState - 复杂状态机、多人协作、需要可测试的更新逻辑:
useReducer