在Redux中,使用actionCreators有什么好处?

时间:2016-03-07 22:11:19

标签: javascript ecmascript-6 redux

我目前正在学习Redux而且遇到了麻烦,我的问题是为什么你需要在没有它们的情况下应用程序工作的动作?他们添加了什么?

{
"01/01/16" => 764.00, 
"02/01/16" => 1508.00, 
"03/01/16" => 2000.00 
..
..
..
}

1 个答案:

答案 0 :(得分:2)

首先,不要在 ActionCreators 操作之间混淆,它们是不同的东西。

操作只是具有type属性的对象(以及您要添加的任何其他内容)。

ActionCreators 根据提供的逻辑和数据构建操作。 例如,假设一个动作“更新一个联系人”,然后动作创建者可能被构建为异步流的thunk,它会将网络请求发送到API以更新联系人,一旦它知道API调用工作,它就会调度行动,可能是这样的:

{
  type: "UPDATE_CONTACT",
  data: { prop: "newValue" }
}

使用CONSTANTS ,这对于更大的代码库进行维护/调试非常方便。通过使用常量,您的环境将更快地标记拼写错误的Action,因为const不存在。如果你纯粹依赖于对象文字或字符串,那么调试可能会更复杂。

为什么要使用动作创建者

ActionCreators主要用于两个目的:

便携性&可测性as per the redux docs

我还发现它们对于动态构建最终动作数据很有用。根据我上面的示例,如果您要POST一个联系人,服务器通常会回复一个LOCATION标题,为您提供联系人的新位置(和可能的ID ),您将需要未来的GET或PUT请求。使用actionCreator,我可以将新数据捆绑到最终的操作对象中,然后看起来像:

{
  type: "CREATE_CONTACT",
  data: {
    first_name: "bob",
    last_name: "builder"
    id: 7         // -> provided by API, the actionCreator injected it
  }
}
相关问题