Назначение mapDispatchToProps на земле Redux - PullRequest
1 голос
/ 19 февраля 2020

Есть ли цель mapDispatchToProps:

const mapDispatchToProps = dispatch => {
  return {
    addProductToCart: product => dispatch(addProductToCart(product))
  }
}

или допустимо просто сделать это:

const mapDispatchToProps = dispatch => {
  return {dispatch};
}

, а затем просто позвонить:

props.dispatch() в компоненте

Ответы [ 2 ]

2 голосов
/ 19 февраля 2020

mapDispatchToProps позволяет вам просто указать действия, которые ваш компонент должен отправить. Вы можете использовать этот подход, потому что он более декларативный (позволяет mapDispatchToProps обрабатывать все тяжелые работы, чтобы вы могли легко вызывать функцию из вашего компонента) или, возможно, вы хотите поделиться функцией диспетчеризации с неподключенным компонентом-избыточностью.

На самом деле вполне допустимо вообще не иметь функцию mapDispatchToProps.

Дополнительно по вашему примеру. Вместо того, чтобы делать следующее:

const mapDispatchToProps = dispatch => {
  return {dispatch};
}

Вы можете просто исключить функцию mapDispatchToProps из метода connect следующим образом:

connect(mapStateToProps)(MyComponent)

Затем сделать следующее в вашем компоненте:

props.dispatch({ type: 'MY_ACTION' })}
0 голосов
/ 19 февраля 2020

Без mapDispatchToProps: -

this.props.dispatch(showAlert(message));

С mapDispatchToProps: -

this.props.onShowAlert(message);

Это было основным назначением mapDispatchToProps

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...