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

时间:2016-12-04 20:21:09

标签: reactjs redux flux reactjs-flux

我想使用Flux标准操作标准来编写我的Redux应用程序的操作,并且我不确定如何构建有效负载本身。 Flux Standard Action github repo上给出的示例是:

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

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

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

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

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

看起来差别在于有效载荷是用于BE还是用于包含Reducer消耗的数据。换句话说,我的Reducer是否应该期望某种类型的数据作为有效载荷(有效载荷是todo对象),或者它们是否应该指定它们从有效载荷中获取的内容(有效载荷包含todo对象) 。

1 个答案:

答案 0 :(得分:4)

  

在计算和电信领域,有效载荷是其中的一部分   传输的数据是实际预期的消息。有效载荷   排除任何仅为便利有效载荷而发送的标题或元数据   递送

如上所述,payload应该只是您的reducer所寻找的数据。像,

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

您的reducer将根据您传递的action生成新状态,我们的行动负责告诉reducer需要做什么。

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

因此明确表示您的行为有效负载将是一个待办事项。没有必要告诉有效载荷中有什么。因为FSA本身告诉此操作包含有效载荷type todo。