Подключите нормальную функцию к mapDispatchToProps Redux - PullRequest
0 голосов
/ 24 января 2020

Я разбираюсь в Redux, и хотя я понимаю, как он работает, я не совсем уверен, правильно ли я его использую.

Документация Redux дает много пример того, как подключить функциональный компонент к моим действиям. Но есть ли способ вызвать мое действие напрямую из функции?

Возможно ли заставить что-то подобное работать?

function mapDispatchToProps(dispatch) {
  return {
    saveUserData: user => dispatch(saveUserData(user))
  };
}

function ConnectedUserInfo(){
  console.log("fetching user info")
  fetch('endpoint', 'headers',
  }).then(response =>
    response.then(user => {
      this.props.saveUserData(user)
    })
  )
}

const getUserInfo = connect(
  null,
  mapDispatchToProps
)(ConnectedgetUserInfo);
export default getUserInfo;

Я попытался установить свое состояние редукции напрямую с помощью saveUserData(user), но магазин не может измениться. Соединение этих двух компонентов, похоже, ничего не дает, если я не делаю что-то не так.

Я не уверен, что это решение, которое я ищу, или Redux хочет, чтобы я отображал MapDispatchToProps каждый раз, когда я хочу изменить состояние.

Ответы [ 2 ]

1 голос
/ 24 января 2020

Если вы прочитали документацию о реагировать на избыточность, вы увидите, что метод connect возвращает HO C, который принимает только реагирующие компоненты. в вашем коде ConnectedgetUserInfo не является компонентом реагирования.

документация по реактиву-редуктору: реакция-редукс

определение компонента реакции: https://reactjs.org/docs/react-component.html

Также вы должны назвать реагирующий компонент стартовым символом Capital.

0 голосов
/ 24 января 2020

Я рекомендую вместо mapdispatch или mapstate использовать useDispatch и использовать выбор из response-redux для функциональных компонентов

import {useSelector,useDispatch} from 'react-redux;

const dispatch=useDispatch();
const stateSelector=useSelector(state=>({
    your states
}));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...