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

时间:2015-04-14 16:06:17

标签: reactjs reactjs-flux

我正在构建我的第一个React前端,并查看通过Dispatcher发送的消息的一些约定。 e.g。

{
  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

使用的最佳消息格式是什么?为什么呢?

1 个答案:

答案 0 :(得分:2)

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

{
  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等)。