专栏名称: 众成翻译
翻译,求知的另一种表达
目录
相关文章推荐
资本时差  ·  你闭嘴吧!说得你比我还有钱似的。 ·  昨天  
杭州网  ·  刚刚,阿里重磅宣布! ·  昨天  
杭州网  ·  刚刚,阿里重磅宣布! ·  昨天  
ETF和LOF圈  ·  大会在即 市场积极 ·  2 天前  
人生资本论  ·  别等了,风向果然变了 ·  2 天前  
人生资本论  ·  罕见!国家下狠心,拼命稳住外资 ·  2 天前  
51好读  ›  专栏  ›  众成翻译

MobX vs Redux with React:一个菜鸟的对比和疑问

众成翻译  · 掘金  ·  · 2018-07-26 13:30

正文

React中的状态管理一直是Javascript兄弟会讨论的主题。 我最近想在我的一个项目中实施状态管理,希望在做出重大决策之前做一点研究。

MobX还是Redux?

在本文中,我们将探讨两者的好处和权衡。 你如何在其中任何一个之间做出选择? 本文假设您具有有关React状态管理的基本知识。

Redux和MobX都在react中运行良好。

单个store vs 多个store

简单来说,store就是您保存所有数据的地方。

Redux总是有一个大型store,其中存储了所有状态。 MobX通常有多个store。 因此,在MobX中,您可以在逻辑上分隔您的store。

此外,在Redux中,数据通常是标准化的。 在MobX中,您可以保留非规范化数据。

普通数据 vs 可观察数据

Redux使用普通的Javascript对象来存储数据。 另一方面,MobX使用observable来存储数据。

为什么这么重要?

您可以监听可观察数据并自动跟踪数据发生的变化。 在redux中,必须手动跟踪所有更新。

不可变与可变(纯与不纯)

Redux使用不可变状态。 这意味着状态是只读的,您不能直接覆盖它们。 在Redux中,先前的状态被新状态替换。 因此Redux是纯粹的,或者它使用 纯函数 .

当你必须恢复到以前的状态时,这可以非常方便。 例如 - 撤消操作。

在MobX中,状态可以被覆盖。 您只需使用新值更新状态即可。 因此,MobX可以被称为不纯粹。

学习

MobX更容易学习,并且具有稳定的学习曲线。 特别是因为大多数传统的Javascript开发人员都熟悉OOP,所以很容易掌握MobX。 MobX中有很多抽象,这也使它更容易。 你不必为许多事情烦恼,否则你必须小心。 (例如:订阅状态)

Redux遵循函数式编程范例。 对于没有函数式编程经验的Javascript开发人员来说,很难直接完全掌握Redux。 您将需要了解像 Redux Thunk 这样的中间件,这将使学习曲线更加陡峭。

在MobX中有很多内置的抽象,这导致代码更少。 但是在实现redux时,你最终会编写很多样板代码。

调试

由于有更多的抽象,调试变得更加困难。 而MobX现有的开发人员工具也只是平均水平。 结果有时会变得无法预测。

另一方面,Redux提供kickass开发人员工具,包括时间旅行。 使用纯函数和较少的抽象,与MobX相比,Redux中的调试将是更好的体验。 遵循通量范例使Redux更具可预测性。







请到「今天看啥」查看全文