【问题标题】:What are drawbacks of using a single mapDispatchToProps?使用单个 mapDispatchToProps 的缺点是什么?
【发布时间】:2016-06-15 16:08:21
【问题描述】:

我尝试遵循 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
    ),
  }
}

【问题讨论】:

    标签: reactjs redux


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2017-07-23
      • 1970-01-01
      • 2010-09-08
      • 2012-03-29
      • 1970-01-01
      • 2015-12-01
      • 2014-11-29
      • 2017-12-07
      相关资源
      最近更新 更多