If we are connecting to the action by using the dispatch there are two way:-
1. this.props.dispatch(requestEmployees());
2. const mapDispatchToProps = (dispatch) => ({
requestEmployees: () => dispatch(requestEmployees())
});
If we are doing the same with the help of bindActionCreators then our
code we will be:-
function matchDispatchToProps(dispatch) {
return bindActionCreators({ editLabResult: requestEmployees}, dispatch);
}
Now my question is, which one I should use dispatch or
bindActionCreators? What is the difference between them?
It's actually the same thing. The result of
bindActionCreators({ editLabResult: requestEmployees}, dispatch);
Is what you've manually created:
requestEmployees: () => dispatch(requestEmployees())
According to the redux bindActionCreators
documentation:
Turns an object whose values are action creators, into an object with
the same keys, but with every action creator wrapped into a dispatch
call so they may be invoked directly.
bindActionCreators({ editLabResult: requestEmployees, anotherAction, etc... }, dispatch);
Instead of using bindActionCreators
, you can pass the object to the connect
method, and it will do the wrapping for you:
connect(mapStateToProps, { editLabResult: requestEmployees, anotherAction, etc... })