是否有通过 Dispatcher 发送的 Flux 消息的约定?

Is there a convention for Flux messages sent via the Dispatcher?

我正在构建我的第一个 React 前端,并看到了一些通过 Dispatcher 发送的消息的约定。例如

{
  type: ActionTypes.RECEIVE_RAW_MESSAGES,
  rawMessages: rawMessages
}

https://github.com/facebook/flux/blob/master/examples/flux-chat/js/actions/ChatServerActionCreators.js#L21

{
  source: 'VIEW_ACTION',
  action: action
}

http://facebook.github.io/react/blog/2014/09/24/testing-flux-applications.html#putting-it-all-together

最好的消息格式是什么?为什么?

简短的回答是,这可能并不重要,只要您的商店寻找正确的数据即可。我总是使用以下格式:

{
  type: 'ACTION_TYPE', // usually defined by a constant
  payload: { ... } // a payload of JSON serializable types
}

如果您的应用需要区分用户发起的操作和来自服务器或其他来源的操作,您可以考虑添加一个 source 键;为此,我个人在有效负载中使用单独的操作类型或数据。

我总是将 payload 设为一个对象(绝不是原始值),以便在不更改接收站点的情况下轻松添加数据。例如,而不是

dispatch({type: ACTION_TYPE, payload: id})

我会推荐

dispatch({type: ACTION_TYPE, payload: {id: id}})

当然,其中一些 可能 取决于您使用的通量实现(如果有)。 Facebook 调度程序是非常不可知的(你几乎可以发送任何你想要的东西),但是一些实现需要特定的键(比如 type,等等)。

Flux Standard Action 是一个标准化 Flux 动作的项目。

简而言之,一个动作必须有一个type,而可能有一个errorpayload, 或 meta.

例子

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

对于一个错误:

{
  type: 'ADD_TODO',
  payload: new Error(),
  error: true
}

meta 字段缩进 "any extra information that is not part of the payload"。我还没有看到这个被使用过,所以我会尝试坚持 payload.