使用单个mapDispatchToProps有什么缺点?

时间:2016-03-02 16:53:45

标签: reactjs redux

我尝试遵循Redux文档中有关演示文稿/容器组件的规则,并使用react-redux connect() 连接我的容器。我使用mapDispatchToProps和bindActionCreators将所需的操作注入到道具调用 actions 中。我从不使用第二个参数 ownProps

随着我的应用变得越来越复杂,我最终得到了很多mapDispatchToProps()(每个容器一个)几乎完全相同;它们绑定了几乎所有动作创建者的所有动作。

所以我想知道:只有一个mapDispatchToProps函数绑定所有操作并在每个容器中使用它会有什么缺点?

这样的事情:

import { bindActionCreators } from 'redux'

import * as EventsActionCreators from '../../actions/EventsActionCreators'
import * as TagsActionCreators from '../../actions/TagsActionCreators'
import * as UsersActionCreators from '../../actions/UsersActionCreators'


export default function mapDispatchToProps(dispatch) {
  return {
    actions: bindActionCreators(
      {
        ...EventsActionCreators,
        ...TagsActionCreators,
        ...UsersActionCreators,
      },
      dispatch
    ),
  }
}

1 个答案:

答案 0 :(得分:2)

如果您的应用程序足够简单以保证这一点,那么我会说去吧。我看到的缺点(如果有的话)与你的connects没有明确指出可用的行为有关。要了解可用的内容,您必须检查mapDispatchToProps的定义。

那说,为什么甚至将此作为功能呢? mapDispatchToProps可以收到一个对象,因此在mapDispatchToProps.js中,这就足够了:

import * as EventsActionCreators from '../../actions/EventsActionCreators'
import * as TagsActionCreators from '../../actions/TagsActionCreators'
import * as UsersActionCreators from '../../actions/UsersActionCreators'

export default {
  ...EventsActionCreators,
  ...TagsActionCreators,
  ...UsersActionCreators,
}

然后

import mapDispatchToProps from './mapDispatchToProps';
import SomeComponent from './SomeComponent';
export ConnectedComponent = connect(null, mapDispatchToProps)(SomeComponent);