状态传播与批处理
Observable 变更后,MobX 沿依赖图通知 computed 与 reaction;批处理把同一事件循环内多次变更合并为一次下游刷新。
1. 传播方向
text
observable 改
→ 通知直接 observers(computed / reaction)
→ computed 若脏,再通知其 observers
→ 最终到 React observer 重渲染POSSIBLY_STALE:延迟标记,避免级联中重复计算(见 10)。
2. 批处理
| API | 作用 |
|---|---|
action / runInAction | 事务内多次改值,结束后再统一传播 |
transaction(旧 API 概念) | 合并通知 |
与 React 18 批处理叠加:MobX 先合并自己的通知,React 再合并 setState。
3. 与 Redux 对比
| MobX | Redux |
|---|---|
| 改字段即触发 | 必须 dispatch |
| 自动找订阅者 | 手动 connect 范围 |
4. 总结
理解 action 边界 + 批处理 可避免「改十个字段渲染十次」;复杂更新包在 runInAction 里。