带参数的 Redux 操作与多个操作



API请求周期操作的推荐方法是什么?

即:我通常有3个步骤

  • 请求已启动(等待响应(
  • 请求成功完成(并返回一个值(
  • 请求失败(或返回错误(

我可以将这些步骤建模为 3 个动作

  • RequestDidStartAction
  • RequestDidFinishWithSuccessAction(在这里我将值作为操作的属性(
  • RequestDidFinishWithFailureAction(在这里我将错误作为操作的属性(

或者我可以将其建模为一个具有枚举的动作:

struct RequestAction: Action {
let state: AsyncRequestState<Value, Error>
}
enum AsyncRequestState<S, F> {
case waiting
case success(S)
case failure(F)
}

两种方法中哪一种更好?还是有更好的选择?

Ps.:我正在使用ReSwift,但我认为这个问题适用于任何Redux实现。

在我看来,从我所读到的内容来看,第一个实现是正确的方法。

操作是将数据从应用程序发送到存储的信息有效负载。它们是商店的唯一信息来源

来源: http://redux.js.org/docs/basics/Actions.html

从哲学的角度来看,由于动作是用于存储的信息的有效载荷,因此轻松区分不同的有效载荷非常重要。从使用的角度来看,它可以是一个嵌套的数据集,您可以随时解析它以再次检查操作。

这方面的示例用例来自 UNDO,当您执行删除操作并且想要撤消该操作时,如果操作多种多样,这将有很大帮助。因为它有助于确定要撤消的操作。考虑同时发生的多个 API 调用,现在您必须跟踪它是什么操作以及它是哪个 API 调用,因此最好将操作分开,这样就不会出现从嵌套数据结构检查类型的复杂性。

最新更新