В чем разница между диспетчерами и bindActionCreators?

Если мы подключаемся к действию с помощью отправки, есть два пути: -

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

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

    });

Если мы будем делать то же самое с помощью bindActionCreators, тогда наш код будет: -

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

Теперь мой вопрос: какой из них я должен использовать для отправки или bindActionCreators? В чем разница между ними?

Ответы

Ответ 1

Это на самом деле то же самое. Результат

bindActionCreators({ editLabResult: requestEmployees}, dispatch);

Это то, что вы создали вручную:

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

Согласно документации bindActionCreators:

Поворачивает объект, значения которого являются создателями действий, в объект с теми же ключами, но с каждым создателем действия, заключенным в диспетчерский вызов, поэтому они могут быть вызваны напрямую.

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

Вместо использования bindActionCreators вы можете передать объект методу connect, и он сделает для вас обертку:

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