两者都可以跟React使用。选择他们各自的好处是什么?
单储存 vs 多储存
你的数据存在store中。
Redux用一个超大store保存状态(Redux 也可以使用多store),MobX用了多个store,所以MobX你可以分离你的store。
Redux的数据更规范。MobX可以有不规范的数据。
纯数据 vs 可观察数据
Redux用原生结构储存数据,MobX用observable储存数据。
这意味着Redux你不得不追踪所有的数据,而MobX只监听发生变化的数据。
不可变 vs 可变 (纯 vs 不纯)
Redux用不可变的状态,意味着所有状态只读且无法直接重写。在Redux,之前的状态会被新状态取代。结果而言,Redux是纯函数。这导致回退到之前的状态是困难的。
MobX状态可以被重写,你可以简单用新值更新状态。MobX可以说是不纯的。
掌握难度
MobX更容易学和驾驭,尤其是大多数传统Javascript 开发者熟悉OOP的话。MobX做的抽象让你不需要担心太多事情。Redux遵循了函数式编程的范例,对函数式编程没有经验的Javascript开发者,很难完全掌握Redux。可能需要学习Redux Thunk这类中间件,上升学习难度。
调试
由于这些抽象,让调试麻烦一点。现有的MobX调试工具都差不多,有时候结果都不可预测。
而Redux提供的调试工具还包括了时间旅行,这种纯函数加上更少的抽象,让调试比MobX有更好的体验,遵循流式编程让Redux更可靠。
可扩展性和可维护性
由于Redux有上述原因,Redux更可靠些。
支持度
Redux 社区力量更大些。