mobx和Redux有哪些优点和缺点,特别是在React-Native环境中?

R. *_*ord 9 immutable.js react-native react-redux mobx-react

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

我只是想看看是否有人有这两方面的经验,并可以建议每个人在哪里拥有优势.

mar*_*son 18

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

  • Redux深受功能编程原则的影响:

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

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

为了进行更深入的比较,我强烈推荐Preethi Kasireddy的演讲MobX vs Redux:比较 2017年ReactConf的反对范式,以及Robin Wieruch的文章Redux或MobX:试图消除混乱.我还在我的React/Redux链接列表中收集许多其他比较.


Spo*_*ort 7

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

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

@saiki link已经编写了一个很好的比较分析,内容丰富,可以帮助您了解使用MobX vs Redux编写代码时的代码.

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

在此输入图像描述

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

State是一个简单的javascript对象.你永远不会直接改变它,而是通过纯函数在应用程序中发生某些事情(导致动作调度)时导出一个新的更新状态. 在此输入图像描述

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