官方文档只声明Redux操作必须是普通对象,并且需要字符串操作类型: 一个普通对象,描述对您的应用程序有意义的更改。...操作必须有一个类型字段,指示正在执行的操作的类型。类型可以定义为常量并从另一个模块导入。对于类型,最好使用字符串,而不是符号,因为字符串是可序列化的。除了类型之外,动作对象的结构实际上取决于您。如果您感兴趣,请查看Flux Standard Action,了解有关如何构造动作的建议。
社区最佳实践
Redux中有很多东西都没有标准化,所以您可以最大限度地灵活地按照自己的方式来做这些事情,但是由于我们大多数人不想对每一个日常细节都提出一个自定义的解决方案,因此社区倾向于建立最佳实践。 为了将这种类型从常规数据中分离出来,使用了payload属性。现在,关于什么应该进入payload以及什么应该与它处于同一级别是有争议的,但是一个流行的标准(官方文档也推荐)是Flux Standard Action,它声明在官方要求中,您可以添加payload、error和meta属性。此处有效负载定义为: 可选的payload属性可以是任何类型的值。它表示操作的负载。有关操作的任何信息,如果不是type或操作的状态,都应该是payload字段的一部分。按照约定,如果error是true,则负载“应该”是错误对象。
这主要是一个风格/惯例的问题。 更多详细信息: 在某些其他情况下,有效负载可以是数据数组,例如JavaScript对象数组。 Wikipedia defined it非常好: 在计算和电信中,有效负载是传输数据中实际预期消息的一部分。发送报头和元数据只是为了使有效负载能够传递。 我们能说动作类型也是有效载荷的一部分吗?如果我们这样看的话,也许我们能说:
4条答案
按热度按时间tsm1rwdh1#
tl;dr
有效负载是一个非官方的、社区接受的(de facto)命名约定,用于保存Redux操作对象中的实际数据。
官方文件
官方文档只声明Redux操作必须是普通对象,并且需要字符串操作类型:
一个普通对象,描述对您的应用程序有意义的更改。...操作必须有一个类型字段,指示正在执行的操作的类型。类型可以定义为常量并从另一个模块导入。对于类型,最好使用字符串,而不是符号,因为字符串是可序列化的。除了类型之外,动作对象的结构实际上取决于您。如果您感兴趣,请查看Flux Standard Action,了解有关如何构造动作的建议。
社区最佳实践
Redux中有很多东西都没有标准化,所以您可以最大限度地灵活地按照自己的方式来做这些事情,但是由于我们大多数人不想对每一个日常细节都提出一个自定义的解决方案,因此社区倾向于建立最佳实践。
为了将这种类型从常规数据中分离出来,使用了
payload
属性。现在,关于什么应该进入payload
以及什么应该与它处于同一级别是有争议的,但是一个流行的标准(官方文档也推荐)是Flux Standard Action,它声明在官方要求中,您可以添加payload
、error
和meta
属性。此处有效负载定义为:可选的
payload
属性可以是任何类型的值。它表示操作的负载。有关操作的任何信息,如果不是type
或操作的状态,都应该是payload
字段的一部分。按照约定,如果error
是true
,则负载“应该”是错误对象。qlckcl4x2#
有效负载是操作中的键(键值对),并在redux应用程序中的reducer之间传递。
这是一个普遍接受的约定,一个动作有一个类型和一个有效负载。有效负载可以是任何有效的JS类型(数组、对象等)。
希望这能澄清你的疑问!
8e2ybdfx3#
操作对象具有
type
:除了
type
之外,它通常还包含某种数据,可以提供关于这个动作的更多信息。2这就是所谓的“payload”。3在上面的动作对象中,id
就是payload。有些程序员会用这样的方式编写它:
这主要是一个风格/惯例的问题。
更多详细信息:
在某些其他情况下,有效负载可以是数据数组,例如JavaScript对象数组。
Wikipedia defined it非常好:
在计算和电信中,有效负载是传输数据中实际预期消息的一部分。发送报头和元数据只是为了使有效负载能够传递。
我们能说动作类型也是有效载荷的一部分吗?如果我们这样看的话,也许我们能说:
在这种情况下,我认为将
BUY_FROM_SUPERMARKET
视为消息的一部分并因此视为有效负载的一部分是合理的,但在Redux中,情况并非如此,但我猜这就是它的方式。50pmv0ei4#
https://redux.js.org/tutorials/fundamentals/part-2-concepts-data-flow
一个动作是一个普通的JavaScript对象,它有一个类型字段。你可以把一个动作看作是一个事件,它描述了在应用程序中发生的事情。
type字段应该是一个字符串,给这个动作一个描述性的名字,比如“todos/todoAdded”。我们通常把这个类型字符串写成“domain/eventName”,其中第一部分是这个动作所属的特性或类别,第二部分是发生的具体事情。
一个动作对象可以有其他的字段来记录所发生的事情,按照惯例,我们把这些信息放在一个叫做payload的字段中。
典型的操作对象可能如下所示:
常量addTodoAction = {类型:'待办事项/待办事项已添加',负载:“买牛奶”}