如何确定组件是应该有自己的化简器函数,还是委托给祖先组件?
例如:
我有一个带有缩减器功能的HomePage
组件,当通过路由器访问页面时,该组件会在商店中注册。
HomePage
组件包含Grid
组件的实例。
<div>
<Grid contents={contents} />
</div>
Grid
组件需要重新计算调整视口大小时使用的编号列,因此我添加了一个与名为UPDATE_COLUMN_COUNT
的Grid
关联的操作。
调度此操作的调用绑定到Grid
onComponentDidMount
中的window
resize
事件。
对于Grid
,我应该在哪里向商店注册其减速器?
我是否应该在路由器中手动注册它(连同HomePage
减速器的现有注册(?
我应该以某种方式将HomePage
的减速器和Grid
的减速器结合起来吗?
还是我应该响应HomePage
减速器中的UPDATE_COLUMN_COUNT
动作,而不是为此组件使用减速器?
就个人而言,我会为此使用本地组件状态,而不是存储在我的 Redux 存储中。这是一个纯粹的显示问题,不会影响任何其他组件,所以我不想使我的代码过于复杂。
如果不同组件可以在整个应用程序中使用此列数,则可能需要将其置于 Redux 状态。
通常,应用程序状态应与您使用的组件松散耦合,即您不要尝试将组件映射到化简器。相反,您可以通过组合化简器并为每个组件选择相关部件来创建相关的应用程序状态。