Skip to content
目录

Action 机制

Action 把多次 observable 修改包在事务里:事务结束前不向外传播,结束后统一通知;且 action 执行期间不追踪新依赖(避免 observer 误绑)。


1. 为何需要 action

无 action有 action
每次赋值可能触发传播批量、可预测
严格模式报错(若开启)符合 MobX 规范

2. API

API用途
action(fn)包装函数
action.bound绑定 this
runInAction异步回调里继续事务
flowgenerator + async,内置 pending 语义

3. 严格模式

configure({ enforceActions: 'always' }):禁止在 action 外改 observable(开发推荐)。


4. 异步

text
async () => {
  await fetch()
  runInAction(() => { this.data = res })  // 必须在 action 内赋值
}

5. 总结

所有会改 store 的代码路径都应落在 action 内;与 Redux「reducer 纯」不同,MobX 允许可变,但要用 action 划边界。

MIT License.