有人可以解释Payload
上下文中的Redux
到底是什么吗?用外行术语来说,技术术语没有用。因此仍然很混乱。
据我了解,Payload
是通过网络传输的实际数据。这是否意味着在Payload
上下文中action
的{{1}}表示在发出更改Redux
{{1}的操作时,作为参数传递的数据}?
答案 0 :(得分:6)
有效负载是非官方的,社区接受的(de facto)用于在Redux操作对象中保存实际数据的属性的命名约定。。< / p>
official documentation仅声明Redux操作必须是普通对象,并且需要字符串操作类型:
一个普通对象,它描述了对您的应用有意义的更改。 ... 动作必须具有一个类型字段,该字段指示正在执行的动作的类型。类型可以定义为常量,并可以从另一个模块导入。使用字符串作为类型比使用符号更好,因为字符串是可序列化的。 除了类型之外,动作对象的结构实际上取决于您。如果您有兴趣,请查看Flux Standard Action,以获取有关如何构造操作的建议。
很多东西在Redux中不是标准化的,因此您具有最大的灵活性以自己的方式来做事情,但是由于我们大多数人都不想针对每个日常细节提出定制解决方案,因此社区倾向于建立最佳做法。
要将此类型与常规数据分开,请使用payload
属性。现在,payload
中应该包含的内容以及与之同等的水平尚有待商,,但Flux Standard Action是一种流行的标准(官方文档也建议使用),其中指出您可以添加一个payload
,error
和meta
属性。这里的有效负载定义为:
可选的
payload
属性可以是任何类型的值。它代表动作的有效负载。非type
以外的任何有关动作的信息或动作的状态都应属于payload
字段。按照惯例,如果error
是true
,则有效载荷应该是一个错误对象。
答案 1 :(得分:5)
一个动作对象有一个type
:
{
type: "DELETE_POST",
id: 123
}
除type
之外,它通常具有某种数据,可提供有关此操作的更多信息。这称为“有效负载”。在上述操作对象中,id
是有效负载。
一些程序员会这样写:
{
type: "DELETE_POST",
payload: {
id: 123
}
}
这主要是样式/约定的问题。
更多详细信息:
在其他情况下,有效负载可能是数据数组,例如JavaScript对象数组。
在计算和电信中,有效载荷是传输数据的一部分,是实际的预期消息。仅发送标头和元数据以启用有效负载传递。
我们可以说动作类型也是有效载荷的一部分吗?如果我们这样看的话,也许可以:
instruction: BUY_FROM_SUPERMARKET
items: ["egg", "milk", "lettuce"]
在这种情况下,我认为将BUY_FROM_SUPERMARKET
视为消息的一部分,并因此将其作为有效负载的一部分是合理的,但是在Redux中则不是,但我想这只是它的方式
答案 2 :(得分:2)
有效负载是捆绑在操作中的内容,并在redux应用程序的减速器之间传递。例如-
const someAction = {
type: "Test",
payload: {user: "Test User", age: 25},
}
这是一种普遍接受的约定,它具有操作的类型和有效负载。有效负载可以是任何有效的JS类型(数组,对象等)。
希望这可以澄清您的疑问!
答案 3 :(得分:-2)
我认为惯例是: 如果我们想将javascript对象(比单个变量复杂的数据)传递给操作,则其名称为有效负载。