old*_*cho 5 javascript state redux
我只是在围绕 Redux 展开我的头脑,我只是想提出一个关于如何state传递给减速器的问题:
我知道 的结构state由combineReducers()函数决定,您在此函数中定义的键将成为state.
我说只有state与特定减速器相关联的子集才会传递给减速器,这是否正确?还是整个state对象都通过了?
在 Redux 中有很多“啊哈”时刻......!
combineReducers接受多个reducer作为参数并返回一个reducer。创建的特定减速器combineReducers仅传递分配给特定减速器的部分状态。这样每个减速器就完全负责自己的状态部分,仅此而已。
但是您可以编写自己的combineReducers,其工作方式会有所不同。这只是说,没有什么特别的combineReducers。
减速器只是一个函数,它接受状态和操作,并返回以某种方式应用操作的状态。或不,由其自行决定。
例如,在 Redux 中,状态的不同分支处理相同(一组)操作是很常见的,但以对状态的该部分有意义的不同方式处理它们。每个动作都会通过 传递给所有子减速器combineReducers,从而使每个分支的减速器有机会执行某些操作或不执行任何操作。
因此,在最常见的用法中,减速器仅负责状态的一部分,而子减速器(例如传递给combineReducers的子减速器或由您自己的减速器调用的减速器)仅负责其子状态/分支。
但是您自己的减速器可以调用子减速器并传递您喜欢的任何内容,例如已经传递给其他减速器的相同状态,甚至它创建的一些数据在全局状态中不可用。
这些事情并不常见,但如果您看到需要,并且有信心继续下去,我们会鼓励您使用您认为最有效的方法。伟大的权力伴随着伟大的责任。
combineReducers只是常见用例的辅助函数。让单个减速器负责状态的特定分支可能是最干净的,但在某些情况下,您可能会发现以不同的方式做事是有益的。单个减速器可以通过嵌套管理复杂的对象,而无需调用任何其他减速器,但常见的模式是在父级变得笨重时制作较小的减速器来处理部件。
要点是要认识到减速器始终是一个纯函数,它接受状态和操作并返回状态。如何实现这一点完全取决于您。大多数开发人员选择遵循其他代码中常见的模式,例如 Dan 的 Redux 示例或他在 Egghead.io 上的视频。
走人迹罕至的道路通常是一个很好的起点,因为它已经过审查。
然而,出于同样的原因,了解为什么要做某事总是很重要的。开发人员有时会使事情变得比需要的更复杂,因为遵循的示例要么是用于其他用途,要么是一开始就没有经过充分考虑。
另请阅读Dan 的这篇文章。
| 归档时间: |
|
| 查看次数: |
314 次 |
| 最近记录: |