有人可以请解释完全是一个什么Payload是Redux情境?用外行术语来说,技术术语没有用。因此仍然是混乱的。
我了解的是Payload通过网络传输的实际数据。这是否意味着,Payload一个action在Redux上下文中意味着,作为参数传递的数据,而一个动作发出改变Redux state?
tot*_*dli 12
有效负载是在Redux操作对象中保存实际数据的属性的一种非正式的,社区公认的(事实上)命名约定。
在官方文档只指出一个终极版的行动必须是一个普通的对象,需要一个字符串操作类型:
一个普通对象,描述对您的应用程序有意义的更改。... 操作必须具有一个类型字段,用于指示要执行的操作的类型。类型可以定义为常量,并可以从另一个模块导入。使用字符串作为类型比使用符号更好,因为字符串是可序列化的。除了类型之外,动作对象的结构实际上取决于您。如果您有兴趣,请查看Flux标准操作以获取有关如何构建操作的建议。
Redux中很多事情都没有标准化,因此您可以最大程度地灵活地以自己的方式进行操作,但是由于我们大多数人都不想针对每个小细节提出定制解决方案,因此社区倾向于建立最佳解决方案实践。
为了将此类型与常规数据分开,payload使用了该属性。现在,什么应该进入payload什么应该是在同一水平上它是有争议的,但一个流行的标准(由官方文档也建议)是流量标准动作该条规定,正式规定中,你可能会增加payload,error,和meta财产。这里的有效负载定义为:
可选
payload属性可以是任何类型的值。它代表动作的有效负载。有关该操作的任何信息(不是type或状态)都应属于该payload字段。按照惯例,如果error为true,则有效负载应为错误对象。
有效负载是捆绑在您的操作中并在redux应用程序的化简器之间传递的内容。例如 -
const someAction = {
type: "Test",
payload: {user: "Test User", age: 25},
}
Run Code Online (Sandbox Code Playgroud)
这是一种普遍接受的约定,它具有操作的类型和有效负载。有效负载可以是任何有效的JS类型(数组,对象等)。
希望这可以澄清您的疑问!
一个动作对象有一个type:
{
type: "DELETE_POST",
id: 123
}
Run Code Online (Sandbox Code Playgroud)
除了 之外type,它通常还有某种数据可以提供有关此操作的更多信息。这称为“有效载荷”。在上面的动作对象中,id是有效载荷。
有些程序员会这样写:
{
type: "DELETE_POST",
payload: {
id: 123
}
}
Run Code Online (Sandbox Code Playgroud)
这主要是风格/惯例的问题。
更多细节:
在其他一些情况下,有效负载可以是数据数组,例如 JavaScript 对象数组。
维基百科对它的定义很好:
在计算和电信中,有效载荷是作为实际预期消息的传输数据的一部分。发送标头和元数据仅用于启用有效负载传送。
我们可以说动作类型也是有效载荷的一部分吗?如果我们这样看,也许我们可以:
instruction: BUY_FROM_SUPERMARKET
items: ["egg", "milk", "lettuce"]
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我认为将其视为BUY_FROM_SUPERMARKET消息的一部分并因此视为有效载荷的一部分是合理的,但在 Redux 中并非如此,但我想它就是这样。