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