使用单个 mapDispatchToProps 的缺点是啥?
Posted
技术标签:
【中文标题】使用单个 mapDispatchToProps 的缺点是啥?【英文标题】: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
),
【问题讨论】:
【参考方案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);
【讨论】:
以上是关于使用单个 mapDispatchToProps 的缺点是啥?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Jest/Enzyme 测试异步 mapDispatchToProps 操作会出错
React Redux:使用 Enzyme/Jest 测试 mapStateToProps 和 mapDispatchToProps
next.js mapStateToProps、mapDispatchToProps 和 getInitialProps