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

sha*_*haz 10 redux

有人可以请解释完全是一个什么PayloadRedux情境?用外行术语来说,技术术语没有用。因此仍然是混乱的。

我了解的是Payload通过网络传输的实际数据。这是否意味着,Payload一个actionRedux上下文中意味着,作为参数传递的数据,而一个动作发出改变Redux state

tot*_*dli 12

tl; dr

有效负载在Redux操作对象中保存实际数据的属性的一种非正式的,社区公认的(事实上命名约定

官方文件

官方文档只指出一个终极版的行动必须是一个普通的对象,需要一个字符串操作类型:

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

社区最佳实践

Redux中很多事情都没有标准化,因此您可以最大程度地灵活地以自己的方式进行操作,但是由于我们大多数人都不想针对每个小细节提出定制解决方案,因此社区倾向于建立最佳解决方案实践。

为了将此类型与常规数据分开,payload使用了该属性。现在,什么应该进入payload什么应该是在同一水平上它是有争议的,但一个流行的标准(由官方文档也建议)是流量标准动作该条规定,正式规定中,你可能会增加payloaderror,和meta财产。这里的有效负载定义为:

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


Sho*_*ora 6

有效负载是捆绑在您的操作中并在redux应用程序的化简器之间传递的内容。例如 -

const someAction = {
  type: "Test",
  payload: {user: "Test User", age: 25},
}
Run Code Online (Sandbox Code Playgroud)

这是一种普遍接受的约定,它具有操作的类型和有效负载。有效负载可以是任何有效的JS类型(数组,对象等)。

希望这可以澄清您的疑问!

  • 也许使用“捆绑”一词会让您感到困惑。从本质上讲,这是存储要传递的数据的操作中的关键。这样命名更像是一个约定,使每个人都更容易阅读。 (5认同)

nop*_*ole 6

一个动作对象有一个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 中并非如此,但我想它就是这样。