What is difference between dispatch and bindAction

2019-03-12 04:49发布

问题:

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?

回答1:

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... })