react-redux 分派一个动作,该动作依赖于另一个同步

时间:2021-06-24 10:48:16

标签: reactjs redux react-redux

我正在尝试使用 redux 操作更新商店。我需要分派两个动作才能得到我的结果。请注意,我无法控制 setFieldAction,因此必须通过两个操作来完成。现在,当我调用第二个调度时,我收到一个错误,因为第一个调度尚未完成,即直到下一次渲染才会更新状态。那么我怎样才能做到这一点?

useEffect(() => {
    dispatch(setFieldAction(0, "field1", "value1"));
    dispatch(setFieldAction(0, "field2", "value2"));
});

2 个答案:

答案 0 :(得分:1)

您可以在 useEffect 函数中检测 FieldAction 状态的变化并对其应用检查。例如:

useEffect(() => {
    if(props.reducer?.obj1?.obj2?.FieldAction === "something"){ // check the value and dispatch the appropriate action,  for example
       dispatch(setFieldAction(0, "field2", "value2"));
    }
}, [props.reducer?.obj1]); // this will be called whenever props.reducer.obj1 is updated

答案 1 :(得分:0)

看看:https://redux-saga.js.org/

它可以让您异步运行您的操作,因此您可以等待您需要的更改,然后以您想要的结果完成您的操作。您还可以设置它以查看操作是成功还是失败。

如果您对它的工作原理感到好奇,YouTube 上有很多关于它的很好的教程。

相关问题