首页 文章

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

提问于
浏览
1

我想使用Flux标准操作标准为我的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
    }
  }
}

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

1 回答

  • 4

    在计算和电信中,有效载荷是传输数据的一部分,它是实际预期的消息 . 有效负载排除了仅为便于有效负载传送而发送的任何标头或元数据 .

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

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

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

    当您的reducer获得一个具有 type: 'ADD_TODO' 的FS Action时,它知道它必须添加一个todo并且todo具有 payload 属性 .

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

相关问题