Redux:为什么不把操作和reducer放在同一个文件中呢

Redux: Why not put actions and reducer in same file?

本文关键字:同一个 文件 reducer 为什么不 操作 Redux      更新时间:2023-09-26

我正在用Redux创建一个应用程序,我很难理解为什么最好将操作和还原程序放在单独的文件中。至少,这是我从所有例子中得到的印象。

每个操作,或操作创建者,似乎都映射到一个由reducer调用的单个函数(在switch语句中)。把这些放在同一个文件里不是合乎逻辑吗?它还使操作类型和开关情况更容易使用相同的常量,因为它不必在文件之间导出/导入。

来自Redux创建者Dan Abramov:

许多减速器可以处理一个动作。一个减速器可以处理多个行动。将它们放在一起否定了Flux和Redux应用规模。这会导致代码膨胀和不必要联轴器。你失去了对相同动作做出反应的灵活性不同的地方,你的动作创作者开始表现得像"setters",耦合到特定的状态形状,从而耦合组件。

来自Redux文档:

我们建议您编写独立的小型减速器函数负责对状态的特定切片进行更新。我们称之为图案"减速器组成"。给定的动作可以由所有人来处理,有些,或者没有。这样可以使组件与实际组件解耦数据更改,因为一个操作可能会影响状态的不同部分树,并且组件不需要意识到这一点。

有关更多信息,请参阅推特上的这段对话和github上的这一问题。

将Actions和Reducer保存在单独的文件中有助于保持代码的模块化。

它可以更容易地发现错误,扩展代码,并在一般情况下处理尽可能小的部分。

示例:

将API错误消息保存到Redux存储可能会有所帮助。

如果我忘记用其中一个Reducer上的传入错误更新存储,那么在多个文件中可能很难找到。

如果我在同一个文件中查看多个Reducer,会更容易看到其中一个缺少error: action.payload行。