构建有效负载的 Flux 标准操作约定是什么?

What is the Flux Standard Action convention for structuring a payload?

我想使用 Flux Standard Action 标准为我的 Redux 应用程序编写操作,但我不确定负载本身应该如何构建。 Flux Standard Action github repo 上给出的例子是:

{
  type: 'ADD_TODO',
  payload: {
    text: 'Do something.'  
  }
}

现在,如果我在负载中传递多条信息怎么办?例如,在一个简单的待办事项应用程序中,假设我的有效负载传递了一个待办事项对象(而不仅仅是上面的待办事项文本)。我不确定它是否应该像这样构造:

{
  type: 'ADD_TODO',
  payload: {
    title: 'Do something.',
    priority: 'HIGH',
    completed: false
  }
}

或者 todo 对象是否应该嵌套在有效负载中,如下所示:

{
  type: 'ADD_TODO',
  payload: {
    todo: {
      title: 'Do something.',
      priority: 'HIGH',
      completed: false
    }
  }
}

看起来不同之处在于有效负载是要包含还是要包含减速器使用的数据。换句话说,我的 reducers 是否应该期望某种类型的数据作为有效载荷(有效载荷是一个 todo 对象),或者它们是否应该指定他们从有效载荷中得到什么(有效载荷包含一个 todo 对象)。

In computing and telecommunications, the payload is the part of transmitted data that is the actual intended message. The payload excludes any headers or metadata sent solely to facilitate payload delivery.

根据上面的引述,payload 应该只是你的减速器寻找的数据。像,

{
  type: 'ADD_TODO',
  payload: {
    title: 'Do something.',
    priority: 'HIGH',
    completed: false
  }
}

您的减速器将根据您传递的 action 生成新状态,我们的操作负责告诉 reducer 需要做什么。

当你的 reducer 得到一个具有 type: 'ADD_TODO' 的 FS Action 时,它知道它必须添加一个待办事项并且待办事项是 payload 属性。

所以很明显,您的操作负载将是待办事项。没有必要告诉有效载荷中有什么。因为 FSA 本身告诉这个动作包含一个有效载荷,它是 type todo.