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?
bindActionCreators(actionCreators, dispatch) 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. Normally you should just call dispatch directly on your Store instance.
bindActionCreators accepts two parameters: A function (an action creator) or an object (each field an action creator) dispatch.
So every time your state is changed mapStateToProps will be called with your new state and subsequently as you props update component will run render function to render your component in browser. mapDispatchToProps also stores key-values on the props of your component, usually they take a form of a function.
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... })
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With