【问题标题】:Is it safe to edit same piece of state with two dispatches in a row连续两次调度编辑相同的状态是否安全
【发布时间】:2020-04-13 05:26:58
【问题描述】:

我正在使用 redux-thunk。我需要使一个状态为空,然后用数据填充它。出于某种原因,我有两个单独的操作,emptyName 和 addName。

所以我所做的只是将它们连续发送,例如:

dispatch(emptyName());
dispatch(addName("London"));

但我想等待第一个完成,然后发送另一个,以确保如果第一个因任何原因搞砸了,我们不会调度第二个动作。

如何做到这一点?我相信调度不是一个承诺,所以我不能只是这样做:

await dispatch(emptyName());
dispatch(addName("London"));

(请不要说这种情况没有必要这样做。因为我可能想在其他更关键的情况下稍后再做,我可能真的需要等待第一个成功完成

附注如果 thunk 无法实现,我也愿意接受 saga 解决方案 :)

【问题讨论】:

    标签: reactjs redux redux-saga redux-thunk


    【解决方案1】:

    如果您使用的是 redux-thunk,您可以从您的操作中返回一个 Promise 并使用 .then(或 await)

    emptyName().then(() => {
      addName("London");
    });
    

    我已经创建了一个人为的示例,在操作中使用 setTimeout 代替数据获取,但原理是相同的。

    https://codesandbox.io/s/redux-thunk-9gbnj

    【讨论】:

    • 感谢您的回复,但我无法更改这些操作。我必须以他们的方式对待他们。
    猜你喜欢
    • 1970-01-01
    • 2015-10-05
    • 2021-01-18
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    • 2016-08-13
    • 2019-10-14
    • 1970-01-01
    相关资源
    最近更新 更多