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

问题描述 投票:9回答:2

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

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

react-native react-redux immutable.js mobx-react
2个回答
18
投票

我将粘贴他们的方法I wrote in a Reddit comment的摘要:

  • Redux深受功能编程原则的影响: 它鼓励使用“纯”函数,希望您“不可变地”处理数据(即,复制和修改副本,不直接更新原始值),并专注于数据流和更新逻辑的显式定义。 它为您提供了诸如“时间旅行调试”功能(在您所在州的各个更新之间来回切换,或从客户崩溃报告中加载应用程序状态的副本以查看正在进行的操作)等功能。 惯用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


7
投票

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

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

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

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

enter image description here

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.