我目前正在学习Redux而且遇到了麻烦,我的问题是为什么你需要在没有它们的情况下应用程序工作的动作?他们添加了什么?
{
"01/01/16" => 764.00,
"02/01/16" => 1508.00,
"03/01/16" => 2000.00
..
..
..
}
答案 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
}
}