Как получить доступ к свойствам, добавленным mapStateToProps в mapDispatchToProps? - PullRequest
0 голосов
/ 18 мая 2018

React Redux предоставляет функцию connect для привязки Redux state и dispatch к компоненту React (как свойства).

connect([mapStateToProps], [mapDispatchToProps], [mergeProps], [options])

mapStateToProps(state, [ownProps]): stateProps

mapDispatchToProps(dispatch, [ownProps]): dispatchProps

Как получить доступ к свойствам, добавленным функцией mapStateToPropsв функции mapDispatchToProps?

Например, я использую функцию mapStateToProps для добавления свойства propertyFromState к компоненту, как получить доступ к свойству propertyFromState в функции mapDispatchToProps?

Я пытаюсь использовать параметр ownProps для доступа к нему, но это undefined.

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Полезная ссылка: Что такое mapDispatchToProps?

mapStateToProps () используется для доступа к переменным из Redux / состояния приложения

function mapStateToProps(state) {
return {
    token: reduxState.token
};
}

Доступ к нему можно получить внутри компонента React, используя this.props.token.

И mapDispatchToProps запускает событие действия (отправка действия, которое может вызвать изменение состояния приложения)

const mapDispatchToProps = (dispatch) =>  {
return{
    send:(variable) =>{dispatch(send(variable))}
}
}
0 голосов
/ 18 мая 2018

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

Первый:

function mapDispatchToProps(dispatch) {
  return {
    onNameChanged: (name) => dispatch({ type: 'NAME_CHANGED', payload: name })
  }
}

Или

function mapDispatchToProps(dispatch) {
   return {
     actions: bindActionCreator(action, dispatch);
   }
}

от вашегоКомпонент просто вызовите this.props.actions (propertyFromState).создайте действие для принятия аргумента, подобного этому, в actions.js

function action1(property){
  return { type: 'NAME_CHANGED', payload: property }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...