在Redux上下文中什么是有效负载

时间:2018-07-16 08:18:14

标签: redux

有人可以解释Payload上下文中的Redux到底是什么吗?用外行术语来说,技术术语没有用。因此仍然很混乱。

据我了解,Payload是通过网络传输的实际数据。这是否意味着在Payload上下文中action的{​​{1}}表示在发出更改Redux {{1}的操作时,作为参数传递的数据}?

4 个答案:

答案 0 :(得分:6)

tl; dr

有效负载是非官方的,社区接受的(de facto用于在Redux操作对象中保存实际数据的属性的命名约定。。< / p>

官方文档

official documentation仅声明Redux操作必须是普通对象,并且需要字符串操作类型:

  

一个普通对象,它描述了对您的应用有意义的更改。 ... 动作必须具有一个类型字段,该字段指示正在执行的动作的类型。类型可以定义为常量,并可以从另一个模块导入。使用字符串作为类型比使用符号更好,因为字符串是可序列化的。 除了类型之外,动作对象的结构实际上取决于您。如果您有兴趣,请查看Flux Standard Action,以获取有关如何构造操作的建议。

社区最佳做法

很多东西在Redux中不是标准化的,因此您具有最大的灵活性以自己的方式来做事情,但是由于我们大多数人都不想针对每个日常细节提出定制解决方案,因此社区倾向于建立最佳做法。

要将此类型与常规数据分开,请使用payload属性。现在,payload中应该包含的内容以及与之同等的水平尚有待商,,但Flux Standard Action是一种流行的标准(官方文档也建议使用),其中指出您可以添加一个payloaderrormeta属性。这里的有效负载定义为:

  

可选的payload属性可以是任何类型的值。它代表动作的有效负载。非type以外的任何有关动作的信息或动作的状态都应属于payload字段。按照惯例,如果errortrue,则有效载荷应该是一个错误对象。

答案 1 :(得分:5)

一个动作对象有一个type

{
  type: "DELETE_POST",
  id: 123
}

type之外,它通常具有某种数据,可提供有关此操作的更多信息。这称为“有效负载”。在上述操作对象中,id是有效负载。

一些程序员会这样写:

{
  type: "DELETE_POST",
  payload: {
    id: 123
  }
}

这主要是样式/约定的问题。


更多详细信息:

在其他情况下,有效负载可能是数据数组,例如JavaScript对象数组。

google material animation很好:

在计算和电信中,有效载荷是传输数据的一部分,是实际的预期消息。仅发送标头和元数据以启用有效负载传递。

我们可以说动作类型也是有效载荷的一部分吗?如果我们这样看的话,也许可以:

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对象(比单个变量复杂的数据)传递给操作,则其名称为有效负载。