使用逗号运算符在 redux 工具包中的同一调度中调用多个减速器不起作用
Posted
技术标签:
【中文标题】使用逗号运算符在 redux 工具包中的同一调度中调用多个减速器不起作用【英文标题】:Calling multiple reducers inside the same dispatch in redux toolkit with the comma operator doesn't work 【发布时间】:2022-01-03 01:18:50 【问题描述】:根据 MDN:
The comma operator (,) evaluates each of its operands (from left to right) and returns the value of the last operand.
This lets you create a compound expression in which multiple expressions are evaluated,
with the compound expression's final value being the value of the rightmost of its member expressions.
This is commonly used to provide multiple parameters to a for loop
所以我认为这样的事情会起作用:
const gameData = useDispatch();
gameData((
readGameAnswers(props.gameAnswers),
readGameAnswersImage(props.gameAnswersImages as string[]),
readCorrectAnswer(props.correctAnswer)));
(其中 3 个读取函数是 store 中定义的 reducer))
这种行为不是我所期望的——只有最后一次读取被调用。为什么会这样?不应该按照逗号运算符的定义来工作吗?
【问题讨论】:
【参考方案1】:不幸的是,不,这不起作用,因为每个方法调用只提供一个操作,并且由于逗号的行为,只有最后一个返回给调度程序 (gameData
)。您正在寻找的是一个将多个 reducer 调用合并为一个的动作创建器。
我相信this question 有你想要的答案!
【讨论】:
以上是关于使用逗号运算符在 redux 工具包中的同一调度中调用多个减速器不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Next.js SSG 或 s-s-r 中使用 Redux 工具包调度?
Redux ToolKit:是不是可以在由 createAsyncThunk 创建的一个操作中调度来自同一切片的其他操作
redux-toolkit 在来自另一个 thunk reducer 的同一切片中使用 actionCreater