我想使用this.props.dispatch和我自己定义的动作创建器来从我的反应视图组件中调度动作。
但是,如果我将mapDispatchToProps传递给connect(),则无法访问this.props.dispatch。所以,这是我提出的解决方法:
function mapDispatchToProps(dispatch) {
return bindActionCreators({
updateRackGroup,
cloneRackGroup,
onSelectRack,
onCloneRack,
valRackChange,
valRackAdd,
onRackAction,
valRackUpdate,
dispatch
}, dispatch);
}
function mapStateToProps({
tempRackStates,
rackGrpsAdded,
invalidFields
}) {
return {
tempRackStates,
rackGrpsAdded,
invalidFields
}
}
export default connect(mapStateToProps, mapDispatchToProps)(RackgroupGenerator);
我对此感到不满意,因为"它包裹发送内的调度"。
在这种情况下,是否有一种优雅的方式可以访问原始调度方法?
答案 0 :(得分:0)
您无需通过dispatch
执行bindActionCreators
。只需将其合并到绑定的动作创建者
function mapDispatchToProps(dispatch) {
const actionCreators = bindActionCreators({
actionCreator1,
actionCreator2,
}, dispatch);
return { ...actionCreators, dispatch };
}
// or without the additional assignment
return {
dispatch,
...bindActionCreators({ actionCreator1, actionCreator2 }, dispatch)
};
顺便说一下,我没有对它进行测试,但我也认为你不应该“用调度包裹调度”,因为我认为它会导致奇怪的行为,例如不情愿地不止一次地发送行动。