如何确定组件是否应具有自己的reducer功能?

时间:2017-07-26 14:14:38

标签: javascript reactjs redux

如何确定组件是否应具有自己的reducer功能,还是委托给祖先组件?

例如:

我有一个带有reducer功能的HomePage组件,当通过路由器访问该页面时,该组件已在商店注册。

HomePage组件中包含Grid组件的实例。

<div>
  <Grid contents={contents} />
</div>

Grid组件需要重新计算调整视口大小时使用的数字列,因此我添加了与名为Grid的{​​{1}}相关联的操作。

调度此操作的调用绑定到UPDATE_COLUMN_COUNT window中的resize onComponentDidMount事件。

对于Grid,我应该在哪里向商店注册其reducer?

我应该在路由器中手动注册(以及Grid减速机的现有注册)吗?

我应该以某种方式将HomePage的缩减器与HomePage的缩减器结合使用吗?

或者我应该回复Grid减速器中的UPDATE_COLUMN_COUNT操作,而不是有此组件的减速器?

1 个答案:

答案 0 :(得分:1)

就个人而言,我会使用本地组件状态而不是存储在我的Redux存储中。这是一个纯粹的显示问题,不会影响任何其他组件,所以我不想让我的代码复杂化。

如果不同组件可以在整个应用程序中使用此列数,那么您可能希望将其置于Redux状态。

通常,应用程序状态应与您使用的组件松散耦合,即您不会尝试将组件映射到reducer。相反,您可以通过组合缩减器来创建相关的应用程序状态,并为每个组件选择相关的部件。