Redux 是否要求我们不要使用 OOP?

Ton*_*y D 4 oop backbone.js redux

我有 OOP 背景,正在学习 Redux。似乎我对 Redux 了解得越多,我就越意识到它与 OOP 范式的对比是如何通过采用更多的函数式构造来实现的。

\n\n

也就是说,我从未使用过 Backbone,但我在有关从 Backbone 模型迁移的 redux 文档中遇到了这一点:

\n\n
\n

Backbone 的模型层与 Redux 有很大不同,因此我们不建议混合它们。如果可能的话,最好从头开始重写应用程序的模型层,而不是将 Backbone 连接到 Redux...

\n
\n\n

来源:\n https://github.com/reactjs/redux/blob/master/docs/recipes/MigrationToRedux.md#from-backbone

\n\n

此外,我发现最初,这只是这样写的:

\n\n
\n

抱歉,您\xe2\x80\x99需要重写您的模型层。\n它\xe2\x80\x99太不同了!

\n
\n\n

来源: https: //github.com/reactjs/redux/commit/fbe0852a25d4bf9819adfe95fef6aa6702658c07#diff-a7be1d864910aa327225143859006953R30

\n\n

Sooo...Dan 是不是说要重写模型层,因为模型(例如来自 Backbone 的模型)本质上是面向对象的,而 redux 规定了更实用的范例?

\n

DDS*_*DDS 5

是和不是。您需要重写数据内容,使其不再是模型,而是状态中的 POJO。它们看起来很像模型,而且它们绝对是对象,但它们不能有方法。好吧,从技术上讲,他们可以,甚至可能不是问题,但不鼓励这样做,因为状态应该是可序列化的。

因为我更喜欢设置属性和调用方法,而不是调度操作,而且因为我喜欢将代码附加到数据中,所以我编写了一个库,可以让您使用模型而不是标准的 Redux 操作创建者/操作/调度/减速器范例。在底层,它是 100% Redux,但 Dev API 都是 OOP。这样它就具有 Redux 的所有优点和 OOP 的所有优点。您可能会发现它减轻了您表达的一些担忧。

但你仍然需要重写你的模型层。

  • 谢谢。听起来您是在说 Flux/Redux 模式最适合贫血域模型。准确吗? (2认同)