Задать вопрос
@Incold

Почему не обновляется state в хранилище Redux?

Здравствуйте! Уже пару часов ломаю голову почему не обновляется state.
Есть action, который отправляет значение полей в форме (логин и пароль) на сервер и получает ответ от него в виде обычной строки.
function app (state=initialState, action) {
  if (action.type === 'LOGIN') {
    if (!Object.keys(state.loginValue).length) return state;
    else {
      let data = JSON.stringify(state.loginValue);
      axios.post('http://localhost:80/signin', data, {
        headers: {
          'Content-Type': 'application/json'
        }
      })
      .then(res => {
        if (res.data !== 'All ok!') {
          console.log(res.data); // Здесь всё хорошо, ответ от сервера (строка) приходит
          return { // Здесь, по идее, должно происходить обновление state, но оно не срабатывает 
            ...state,
            loginWarning: res.data 
          };
        }
      })
      .catch(() => state)
    }
  }
  ...
  return state;
}


Установил subscribe на state, и он не срабатывает, т.к. нет изменений. Как это исправить? Заранее, спасибо за любую помощь!
  • Вопрос задан
  • 153 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
search
@search
мама говорит что я особенный
1. В редьюсере не должно быть асинхронных операций. Уберите axios из редьюсера. Так не получится.
2. Вам нужен thunk. Вот пример как это делается правильно https://alligator.io/redux/redux-thunk/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы