将多个动作传递给bindActionCreators

时间:2019-05-07 14:32:22

标签: javascript reactjs redux

我似乎找不到这个问题的具体答案。

如果我有一个已连接的组件,并且希望从不同的化合器传递多个动作:

import { actions as commonActions } from 'some/action/file';
import { actions as userActions } from 'another/action/file';

我可以像在bindActionCreators通话中那样使用mapDispatchToProps吗?

const mapDispatchToProps = dispatch => ({
  actions: bindActionCreators((commonActions, userActions), dispatch)
});

或者我必须像这样传递它们

actions: bindActionCreators({ ...commonActions, ...userActions }, dispatch);

它们在我正在开发的所有应用程序中都像后者一样传递,但是我正在清理和更新应用程序,并希望将其最小化。前者是可以接受的,还是必须作为变形对象传递?

谢谢!

1 个答案:

答案 0 :(得分:1)

您想使用Object.assign:

return {
     actions: bindActionCreators(Object.assign({}, commonActions, userActions), dispatch) 
};

您可以直接在商店上调用操作,以便删除bindActionCreators: this.props.store.dispatch(sendMessage())

马克·埃里克森(Mark Erikson)的

This article进行了更详细的介绍,并提供了bindActionCreators的替代方法,因为他建议不要使用它。