11

最近我听到每个人都在谈论 mobx,我在生产 React Native 应用程序中使用(正在使用)Redux。

我只是想看看是否有人对两者都有经验,并且可以建议每个人在哪里比另一个人拥有优势。

4

2 回答 2

23

我将在 Reddit 评论中粘贴他们的方法摘要:

  • Redux 深受函数式编程原则的影响:

    • 它鼓励使用“纯”函数,希望您“不可变”地处理数据(即,制作副本并修改副本,不要直接更新原始值),并专注于数据流和更新逻辑的显式定义。
    • 它为您提供了诸如进行“时间旅行调试”(在您的状态的各个更新之间来回切换,或从客户崩溃报告中加载应用程序状态的副本以查看发生了什么)等功能。
    • 惯用的 Redux 代码“规范化”嵌套或关系对象,如数据库。每个项目都在一个地方定义,数据的其他部分将仅通过 ID 引用该项目,留待以后查找
    • 通常的抱怨是样板代码太多,典型的 Redux 使用涉及字符串常量和 switch 语句之类的东西。
    • 当您想显式跟踪通过应用程序的数据流时,或者想确切了解应用程序为何处于某种状态时,请使用它。
  • MobX 受面向对象编程和响应式编程原则的影响:

    • 它允许您将特定的数据片段定义为“可观察的”,然后将它们包装起来并跟踪对该数据所做的任何更改,并自动更新正在观察数据的任何其他代码片段。
    • 它鼓励使用标准的变异代码,比如 someObject.someField = someValue 和 someArray.push(someValue),真正的更新逻辑隐藏在 MobX 内部。
    • 惯用的 MobX 代码以嵌套形式保存您的数据并维护从一个对象到另一个对象的直接引用
    • 一种可能的抱怨是您看不到数据更新的时间和方式,并且可能更难通过应用程序进行跟踪
    • 当您更喜欢 OOP 风格而不是函数式风格,更喜欢由类而不是普通函数来表示和操作数据,或者想要编写不太明确的更新逻辑并让库来完成管理工作时,请使用它。

要进行更深入的比较,我强烈推荐 Preethi Kasireddy 的演讲MobX 与 Redux:比较ReactConf 2017 中的对立范式,以及 Robin Wieruch 的文章Redux 或 MobX:消除混淆的尝试。我的 React/Redux 链接列表中还收集了许多其他比较

于 2017-04-10T05:58:11.730 回答
7

MobX 和 Redux 尝试使用不同的方法来解决类似的问题。主要目标是;javascript 应用程序中的状态管理。

这里的核心问题是通过您之间的任何层和传输机制,在您的主数据源和用户界面之间有效和优化信息同步。

@saiki链接已经写了一个很棒的比较分析,里面有很多例子,它可以帮助你理解使用 MobX 和 Redux 编写的代码会是什么样子。

MobX 采用了一种通常称为声明式 MVVM 的方法:

在此处输入图像描述

Redux 包含函数式编程和引用透明性:

State 是一个普通的 javascript 对象。您永远不会直接对其进行变异,而是通过纯函数在应用程序中发生某些事情(导致动作分派)时派生一个新的更新状态。 在此处输入图像描述

有关更多详细信息,您可以通过示例查看此示例

于 2017-04-10T05:47:33.443 回答