我只是想看看是否有人有这两方面的经验,并可以建议每个人在哪里拥有优势.
> Redux深受功能编程原则的影响:
>它鼓励使用“纯”函数,希望您“不可变”地处理数据(即复制和修改副本,不直接更新原始值),并专注于数据流的明确定义和更新逻辑.
>它为您提供了诸如“时间旅行调试”功能(在您的州的各个更新之间来回切换,或从客户崩溃报告中加载应用程序状态的副本以查看正在进行的操作)等功能.
> Idiomatic Redux代码“规范化”嵌套或关系对象,如数据库.每个项目都在一个地方定义,而数据的其他部分只能通过ID引用该项目,以便稍后查找
>通常的抱怨是有太多的样板代码,而典型的Redux用法涉及字符串常量和switch语句之类的东西.
>当您想要通过应用程序显式跟踪数据流时,或者想要确切了解应用程序在特定状态下结束的原因时,请使用它.
> MobX受面向对象编程和反应编程原则的影响:
>它允许您将特定的数据片段定义为“可观察”,然后将其包装起来并跟踪对该数据所做的任何更改,并自动更新观察数据的任何其他代码片段.
>它鼓励使用标准的变异代码,如someObject.someField = someValue和someArray.push(someValue),真正的更新逻辑隐藏在MobX内部.
>惯用的MobX代码以嵌套的形式保存您的数据,并维护从一个对象到另一个对象的直接引用
>一个可能的抱怨是,您没有看到数据更新的时间和方式,并且可能更难以跟踪应用程序
>当您更喜欢OOP样式而不是Functional时,请使用它,更喜欢通过类而不是普通函数来表示和操作数据,或者希望编写不太明确的更新逻辑并让库完成管理事务的工作.
对于更深入的比较,我强烈推荐来自ReactConf 2017的Preethi Kasireddy的谈话MobX vs Redux: Comparing the Opposing Paradigms和Robin Wieruch的文章Redux or MobX: An attempt to dissolve the confusion.我也有number of other comparisons collected in my React/Redux links list.