【问题标题】:Redux action with parameter vs multiple actions带参数的 Redux 操作与多个操作
【发布时间】:2017-08-22 04:34:00
【问题描述】:

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 实现。

【问题讨论】:

    标签: redux reswift


    【解决方案1】:

    根据我的观点和阅读的内容,第一个实现是正确的做法。

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

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

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-03
    • 2020-06-13
    • 2012-01-07
    • 1970-01-01
    • 2016-08-06
    • 2020-09-26
    • 2015-08-21
    • 2017-11-05
    相关资源
    最近更新 更多