使用单个 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);
我尝试遵循有关 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);