从组件中访问this.props.dispatch和其他操作创建者

时间:2017-02-24 03:09:56

标签: redux react-redux

我想使用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);

我对此感到不满意,因为"它包裹发送内的调度"。

在这种情况下,是否有一种优雅的方式可以访问原始调度方法?

1 个答案:

答案 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)
};
顺便说一下,我没有对它进行测试,但我也认为你不应该“用调度包裹调度”,因为我认为它会导致奇怪的行为,例如不情愿地不止一次地发送行动。