为什么不应该将MobX用作状态容器?

时间:2018-08-12 17:29:22

标签: javascript reactjs mobx mobx-react

为什么不应该将MobX用作状态容器?如official docs“ MobX不是状态容器”中所述?不像Redux吗?

2 个答案:

答案 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作为完整的状态管理工具。