Reaction 副作用机制
Reaction 把「当这些 observable 变时执行副作用」自动化:autorun、reaction、when 三档 API,由粗到细。
1. 三种 API
| API | 行为 |
|---|---|
| autorun | 立即跑;依赖变再跑;自动收集依赖 |
| reaction | () => data 追踪 + (data) => effect 副作用;可比较 data 减少触发 |
| when | 条件真时执行一次(Promise 友好) |
2. 与 computed 边界
| computed | reaction |
|---|---|
| 返回值、纯 | 副作用、IO |
| 参与 UI 数据 | 日志、请求、路由 |
3. 清理
autorun返回 disposer,组件useEffect里应 dispose。- mobx-react 的
observer在卸载时清理渲染 derivation。
4. 反模式
- autorun 里改 observable → 可能无限循环。
- 巨大 autorun 依赖整个 store → 任何小改都跑。
5. 总结
Reaction = 命令式 glue;数据流主体仍应是 observable + computed + action。