Redux:为什么不把操作和reducer放在同一个文件中呢
Redux: Why not put actions and reducer in same file?
我正在用Redux创建一个应用程序,我很难理解为什么最好将操作和还原程序放在单独的文件中。至少,这是我从所有例子中得到的印象。
每个操作,或操作创建者,似乎都映射到一个由reducer调用的单个函数(在switch语句中)。把这些放在同一个文件里不是合乎逻辑吗?它还使操作类型和开关情况更容易使用相同的常量,因为它不必在文件之间导出/导入。
来自Redux创建者Dan Abramov:
许多减速器可以处理一个动作。一个减速器可以处理多个行动。将它们放在一起否定了Flux和Redux应用规模。这会导致代码膨胀和不必要联轴器。你失去了对相同动作做出反应的灵活性不同的地方,你的动作创作者开始表现得像"setters",耦合到特定的状态形状,从而耦合组件。
来自Redux文档:
我们建议您编写独立的小型减速器函数负责对状态的特定切片进行更新。我们称之为图案"减速器组成"。给定的动作可以由所有人来处理,有些,或者没有。这样可以使组件与实际组件解耦数据更改,因为一个操作可能会影响状态的不同部分树,并且组件不需要意识到这一点。
有关更多信息,请参阅推特上的这段对话和github上的这一问题。
将Actions和Reducer保存在单独的文件中有助于保持代码的模块化。
它可以更容易地发现错误,扩展代码,并在一般情况下处理尽可能小的部分。
示例:
将API错误消息保存到Redux存储可能会有所帮助。
如果我忘记用其中一个Reducer上的传入错误更新存储,那么在多个文件中可能很难找到。
如果我在同一个文件中查看多个Reducer,会更容易看到其中一个缺少error: action.payload
行。
- Redux:为什么不把操作和reducer放在同一个文件中呢
- js脚本是否可以在同一个文件中获得在EJS上下文/页面中编写的变量
- 为什么我不能在require.js中两次使2个路径指向同一个文件
- 从同一个文件而不是另一个文件设置“脚本源”
- npm将所有依赖项和子依赖项放在同一个文件夹中
- 从同一个文件和不同的文件调用nodejs函数
- Webpack multiple需要解析到同一个文件,但要导入两次
- 在同一个文件中使用JavaScript和jQuery
- 准备新的文件,甚至是同一个文件
- 从javascript发送一个字符串到php(在同一个文件中)
- 命名导出和默认导出在同一个文件中
- 我可以在同一个文件中使用函数(e)两次或更多次吗?
- 我应该把React组件的UT测试与该组件放在同一个文件中吗?
- Node.js -从同一个文件中获取两个相等的表达式
- 访问同一个文件
- 如果我们希望PHP中的数据保存在同一个文件中,我们能做些什么来代替javascript中的ajax调用呢?
- 使用webpack,我可以把Node.js和浏览器代码放在同一个文件中,但防止Node.js代码进入浏览器吗?
- 两个电子邮件在同一个文件php
- 使用javascript switch语句在同一个文件中调用php函数
- I'm试图在同一个文件(Google Maps API)中将Javascript变量传递给PHP