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

k3bvogb1  于 2022-11-12  发布在  其他
关注(0)|答案(4)|浏览(244)

有人能解释一下在Redux的上下文中Payload到底是什么吗?请用外行的话来说,这个专业术语没有用。所以还是很混乱。
我所理解的是Payload是通过网络传输的实际数据。这是否意味着,Redux上下文中actionPayload意味着当发出一个操作来更改Reduxstate时作为参数传递的数据?

tsm1rwdh

tsm1rwdh1#

tl;dr

有效负载是一个非官方的、社区接受的(de facto命名约定,用于保存Redux操作对象中的实际数据

官方文件

官方文档只声明Redux操作必须是普通对象,并且需要字符串操作类型:
一个普通对象,描述对您的应用程序有意义的更改。...操作必须有一个类型字段,指示正在执行的操作的类型。类型可以定义为常量并从另一个模块导入。对于类型,最好使用字符串,而不是符号,因为字符串是可序列化的。除了类型之外,动作对象的结构实际上取决于您。如果您感兴趣,请查看Flux Standard Action,了解有关如何构造动作的建议。

社区最佳实践

Redux中有很多东西都没有标准化,所以您可以最大限度地灵活地按照自己的方式来做这些事情,但是由于我们大多数人不想对每一个日常细节都提出一个自定义的解决方案,因此社区倾向于建立最佳实践。
为了将这种类型从常规数据中分离出来,使用了payload属性。现在,关于什么应该进入payload以及什么应该与它处于同一级别是有争议的,但是一个流行的标准(官方文档也推荐)是Flux Standard Action,它声明在官方要求中,您可以添加payloaderrormeta属性。此处有效负载定义为:
可选的payload属性可以是任何类型的值。它表示操作的负载。有关操作的任何信息,如果不是type或操作的状态,都应该是payload字段的一部分。按照约定,如果errortrue,则负载“应该”是错误对象。

qlckcl4x

qlckcl4x2#

有效负载是操作中的键(键值对),并在redux应用程序中的reducer之间传递。

const someAction = {
  type: "Test",
  payload: {user: "Test User", age: 25},
}

这是一个普遍接受的约定,一个动作有一个类型和一个有效负载。有效负载可以是任何有效的JS类型(数组、对象等)。
希望这能澄清你的疑问!

8e2ybdfx

8e2ybdfx3#

操作对象具有type

{
  type: "DELETE_POST",
  id: 123
}

除了type之外,它通常还包含某种数据,可以提供关于这个动作的更多信息。2这就是所谓的“payload”。3在上面的动作对象中,id就是payload。
有些程序员会用这样的方式编写它:

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

这主要是一个风格/惯例的问题。
更多详细信息:
在某些其他情况下,有效负载可以是数据数组,例如JavaScript对象数组。
Wikipedia defined it非常好:
在计算和电信中,有效负载是传输数据中实际预期消息的一部分。发送报头和元数据只是为了使有效负载能够传递。
我们能说动作类型也是有效载荷的一部分吗?如果我们这样看的话,也许我们能说:

instruction: BUY_FROM_SUPERMARKET
items:       ["egg", "milk", "lettuce"]

在这种情况下,我认为将BUY_FROM_SUPERMARKET视为消息的一部分并因此视为有效负载的一部分是合理的,但在Redux中,情况并非如此,但我猜这就是它的方式。

50pmv0ei

50pmv0ei4#

https://redux.js.org/tutorials/fundamentals/part-2-concepts-data-flow
一个动作是一个普通的JavaScript对象,它有一个类型字段。你可以把一个动作看作是一个事件,它描述了在应用程序中发生的事情。
type字段应该是一个字符串,给这个动作一个描述性的名字,比如“todos/todoAdded”。我们通常把这个类型字符串写成“domain/eventName”,其中第一部分是这个动作所属的特性或类别,第二部分是发生的具体事情。
一个动作对象可以有其他的字段来记录所发生的事情,按照惯例,我们把这些信息放在一个叫做payload的字段中。
典型的操作对象可能如下所示:
常量addTodoAction = {类型:'待办事项/待办事项已添加',负载:“买牛奶”}

相关问题