推荐的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实现。
答案 0 :(得分:0)
在我看来,从我所读到的,第一个实现是正确的方法。
操作是将数据从应用程序发送到商店的信息的有效负载。它们是商店的唯一信息来源
来源:http://redux.js.org/docs/basics/Actions.html
从哲学的角度来看,由于动作需要作为存储的信息有效载荷,因此轻松区分不同的有效载荷非常重要。从使用的角度来看,它可以是嵌套数据集,您可以在需要再次检查操作时随时解析该数据集。
此示例用例来自UNDO,当您执行删除操作时,如果ACTIONS不同,您想撤消该操作将会很有帮助。因为它有助于确定要逆转的行动。考虑同时发生多个API调用,现在您必须跟踪它是什么动作以及它是哪个API调用,因此最好将操作分开,以便从嵌套数据结构中检查类型的复杂性没有出现。