Действие Redux больше не работает после обновления с 5 до 7 - PullRequest
0 голосов
/ 10 февраля 2020

Я обновляю react-redux с 5 до 7.1.3.

Мои действия больше не запускаются. Они сделали какие-то изменения при торможении?

Мой компонент: ...

class App extends React.Component<IProps, IState> {
..
this.props.setUser(user);
..
};

const mapStateToProps = (state: IRootReducer) => ({
  user: state.globalReducer.user,
});

export default withRouter<any>(connect(mapStateToProps, {
  setUser
})(App));

Мое действие:

export const setUser = (user: IUser) => dispatch => {
  console.log('fire') // not firing
  dispatch({
    type: SET_USER,
    payload: {
      user
    }
  });
};

В примерах они имеют dispatch в компонент. Но я не хочу менять весь мой код. Также я отправляю действия из других действий.

Как мне решить эту проблему без особых изменений в моем коде?

Ответы [ 2 ]

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

Ваше действие setUser возвращает функцию с dispatch в качестве аргумента. Я предполагаю, что вы используете пакет https://github.com/reduxjs/redux-thunk, иначе действие setUser может не сработать. Возможно, попробуйте обновить пакет redux-thunk.

0 голосов
/ 12 февраля 2020

Попробуйте отправить действие setUser:

class App extends React.Component<IProps, IState> {
..
this.props.dispatch(this.props.setUser(user));
..
};

const mapStateToProps = (state: IRootReducer) => ({
  user: state.globalReducer.user,
});

export default withRouter<any>(connect(mapStateToProps, {
  setUser
})(App));

Если вы хотите использовать диспетчеризацию из файла действия, вам нужно изменить эту часть:

export default withRouter<any>(connect(mapStateToProps, {
  setUser
})(App));

на эту:

export default withRouter<any>(connect(mapStateToProps, (dispatch) => {
  return {
   setUser: (user) => dispatch(setUser(user))
  }
})(App));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...