异步操作失败时恢复旧状态的通用方法?

时间:2017-08-05 21:22:22

标签: react-native redux redux-saga

我将所有状态保存在商店中,并使用redux-sagas处理所有异步操作。

因此,如果我有一个整数字段,更改其应该触发异步操作,我将TextInput值连接到商店中的实际值。 一旦用户更改了值并离开了字段,我就会发送一个动作。 这将由一个saga接收,它将调用API。但如果失败了,我需要恢复以前的值。处理这个问题的好方法是什么?

目前我在动作中传递旧值和新值,以便传奇可以放置一个新动作来恢复它,但这感觉就像一个kludge。以前遇到过这个吗?

1 个答案:

答案 0 :(得分:0)

好吧,如果你想恢复旧值,你必须将它存储在某个地方。但是,我不会将旧值和新值都传递给您的操作,而是会记住您所在州的旧值。

您的州可能如下所示:

const state = {
  value: 5,
  oldValue: 4
};

然后,当值发生变化时,您会将oldValue更新为value并将value更新为新值。如果API调用失败,您可以再次将value设置为oldValue

完整示例:https://codesandbox.io/s/0RORjNm8y