为什么不应该将MobX用作状态容器?如official docs“ MobX不是状态容器”中所述?不像Redux吗?
答案 0 :(得分:5)
文档没有说您“ 不应将mobx用作状态容器”。
他们说的是“ mobx不是状态容器”。
不一样。
Mobx是一种工具,可让您根据observer pattern编写代码。
对于mobx,它是关于观察changes in values
并对其做出反应。 (另一个rxjs之类的lib使用流)因此,mobx的问题在于您是否认为使用观察者模式对您有好处。
文档试图解释的是,如果需要,您可以使用mobx将应用程序状态编写为可观察的数据结构。但这不会以任何方式强制或帮助您构建应用程序状态。我想大多数人都在单页面React应用程序的上下文中进行思考。对于React应用,默认情况下仅通过用mobx-react observer
装饰来优化React UI组件就容易得多。感谢mobx
,这是使用此模式的优势。
但是它的用例不仅限于创建可观察的应用程序状态,系统中还有其他“事物”或您要“观察”的情况。
那就是说,当我在Redux / React应用程序上工作时,没有比mobx更自由的了。随着时间的流逝,出现了最佳实践和工具来指导人们,并且Redux生态系统似乎解决了构建应用程序的各个方面。仅仅是Redux旨在从一开始就创建应用状态的表示。如另一个答案中所述,mobx-state-tree
与其等效。
答案 1 :(得分:1)
考虑到类似的动作分配模式,工具等,与MobX状态树I相比,Redux更好。MobX对如何从旧状态派生新状态不提供任何限制。它的创建者likes to call it.
更像是一个数据流库MobX帮助我们在React组件之外设置反应性。这样,视图组件可以保持逻辑。但是,MST确实使状态管理更容易且切实可行。由于状态类型的引入,它还提供了Redux之类的devtools。因此,MST可以比MobX更好地替代Redux。
检查original post,了解为什么创建MobX状态树以及它如何完善MobX作为完整的状态管理工具。