【发布时间】:2017-09-16 07:30:53
【问题描述】:
我的商店包含一个数组,当用户单击按钮时,我将向该数组追加新项目。这些物品的内容取决于商店其他地方设置的标志。
例如,如果用户之前启用了“设置 X”,则新数组项应包含 { type: 'x'} 而不是默认的 {type: 'y'}。
我了解如何调度一个动作来执行添加一个新数组项,但我不知道如何组合该状态的其他部分的动作。
我的问题:
我真的需要在这里使用
redux-thunk吗?我找不到一个最终不会依赖它的 SO 答案。我是 React 的新手,想了解为什么默认情况下这不可能。这是否是因为状态可能会在用户单击按钮和被调度的操作之间以某种方式发生变化?
我是否缺少更明显/hacky 的方法来执行此操作?我试过在
mapDispatchToProps中使用ownProps但ownProps似乎只包含connect()提供的道具not 和它提供的“Setting X”is .
【问题讨论】:
-
您可以利用每个减速器实际上处理每个状态更改的事实来作用于 2 个不同的减速器。所以你可以在 2 个 reducer 中使用相同的 case 语句。
-
你的意思是用reducer A创建新的数组项,没有任何
type,但是以某种方式识别它,以便第二个reducer B可以用type“升级”这个新数组项?对我来说,这听起来像是造成维护混乱的秘诀。 -
嗯,是的,但这就是您所描述的情况。或者,也许我错过了什么?也许如果您可以输入一些代码,我们可以看看它会更容易提供帮助:)
-
标志可以是动作的参数。您可以在组件中读取状态并在创建操作时将其传递。您还可以在查看子减速器中所有内容的父减速器中处理它。
标签: reactjs state react-redux redux-thunk