如何确定组件是否应具有自己的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
操作,而不是有此组件的减速器?
答案 0 :(得分:1)
就个人而言,我会使用本地组件状态而不是存储在我的Redux存储中。这是一个纯粹的显示问题,不会影响任何其他组件,所以我不想让我的代码复杂化。
如果不同组件可以在整个应用程序中使用此列数,那么您可能希望将其置于Redux状态。
通常,应用程序状态应与您使用的组件松散耦合,即您不会尝试将组件映射到reducer。相反,您可以通过组合缩减器来创建相关的应用程序状态,并为每个组件选择相关的部件。