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

带参数的Redux操作与多个操作,redux,reswift,Redux,Reswift,对于API请求周期的操作,推荐的方法是什么 i、 我通常有三个步骤 请求已启动(等待响应) 请求成功完成(并返回一个值) 请求失败(或返回错误) 我可以将这些步骤建模为3个动作 RequestDidStartAction RequestDidFinishWithSuccessAction(这里我将该值作为操作的属性) RequestDidFinishWithFailureAction(这里我将错误作为操作的属性) 或者我可以将其建模为一个具有枚举的操作: struct RequestAc

对于API请求周期的操作,推荐的方法是什么

i、 我通常有三个步骤

  • 请求已启动(等待响应)
  • 请求成功完成(并返回一个值)
  • 请求失败(或返回错误)
我可以将这些步骤建模为3个动作

  • RequestDidStartAction
  • RequestDidFinishWithSuccessAction
    (这里我将该值作为操作的属性)
  • RequestDidFinishWithFailureAction
    (这里我将错误作为操作的属性)
或者我可以将其建模为一个具有枚举的操作:

struct RequestAction: Action {

    let state: AsyncRequestState<Value, Error>

}

enum AsyncRequestState<S, F> {

    case waiting
    case success(S)
    case failure(F)

}
struct RequestAction:Action{
let状态:AsyncRequestState
}
枚举异步请求状态{
案件等待
个案成功
案例失败(F)
}
这两种方法中哪一种更好?还是有更好的选择


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

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

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

资料来源:

从哲学的角度来看,作为存储信息的有效载荷,一个动作是必要的,因此很容易区分不同的有效载荷是很重要的。从使用角度来看,它可以是一个嵌套的数据集,您可以在需要再次检查操作时随时解析它


例如,当您执行一个删除操作,并且希望撤消该操作时,如果操作多种多样,这将非常有帮助。因为它有助于确定要反转的操作。考虑一个同时发生的多个API调用,现在您必须跟踪它是什么动作以及API调用它是什么,所以它更好地使动作分开,从而不会从嵌套的数据结构中检查类型的并发症。你能给我举一个第一个模型比第二个好的例子吗?希望这有帮助这是一个由社区创建的标准。