Skip to content

MobX 隔离对照 ​

/mobx.html 的 ClipViewModel 只存在于实验页内。makeAutoObservable 追踪 x、y、 scale、rotation 和 opacity;reaction 记录属性变化,observer 触发局部 React 渲染。右侧则创建另一份 Redux Project,并且只能通过 ProjectCommandController 写入。

对比项MobX 实验正式 Redux + Command
数据范围临时 Clip ViewModel整个可序列化工程
更新方式调实例 action发送判别联合 Command
观测reaction / render countrevision / Command 日志
Undo/Redo未提供Command 事务快照
持久化不持久化Project JSON -> IndexedDB
边界不共享对象、不写 Project唯一正式写入口

这里不是证明某个状态库“更快”。实验只展示更新模型差异;仓库没有对两者做性能基准, 因此文档不声明固定倍数。

复现与预期输出 ​

bash
pnpm dev:editor

打开 http://localhost:5173/mobx.html,拖动“位置 X”一次,再点“执行 Redux Command”:

text
UI: MobX action 0 -> 1,reaction 0 -> 1,Redux revision 保持 0
UI: 点击右侧按钮后 Redux revision 0 -> 1,左侧 action/reaction 不变
Console: 无正式 [COMMAND] 日志面板;实验通过页面计数暴露边界
CLI: Vite Local http://localhost:5173/

自动测试:

bash
pnpm test

源码证据 ​