使用单个 mapDispatchToProps 有什么缺点?

What are drawbacks of using a single mapDispatchToProps?

我尝试遵循有关 presentational/container 组件的 Redux 文档的规则,并且我 连接 我的容器使用 react-redux connect(). I use mapDispatchToProps and 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
    ),
  }
}

如果您的应用程序足够简单以保证这一点,那么我会说去做吧。我看到的缺点(如果有的话)与您的 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);