dispatch 和 bindActionCreators 有什么区别?

IT技术 reactjs redux react-redux
2021-05-24 13:18:55

如果我们使用 dispatch 连接到 action,有两种方式:-

1. this.props.dispatch(requestEmployees());

2. const mapDispatchToProps = (dispatch) => ({
      requestEmployees: () => dispatch(requestEmployees())

    });

如果我们在 bindActionCreators 的帮助下做同样的事情,那么我们的代码将是:-

function matchDispatchToProps(dispatch) {
        return bindActionCreators({ editLabResult: requestEmployees}, dispatch);
    }

现在我的问题是,我应该使用dispatch 还是 bindActionCreators它们之间有什么区别?

1个回答

其实是一样的。的结果

bindActionCreators({ editLabResult: requestEmployees}, dispatch);

是您手动创建的:

requestEmployees: () => dispatch(requestEmployees())

根据 reduxbindActionCreators文档:

将值是动作创建者的对象转换为具有相同键的对象,但每个动作创建者都包含在调度 调用中,以便可以直接调用它们。

bindActionCreators({ editLabResult: requestEmployees, anotherAction, etc... }, dispatch);

bindActionCreators您可以将对象传递给connect方法,而不是使用它会为您完成包装:

connect(mapStateToProps, { editLabResult: requestEmployees, anotherAction, etc... })