Как исправить ложное действие диспетчеризации - PullRequest
0 голосов
/ 12 февраля 2020
  1. Когда я нажимаю на кнопку, приложение отправляет запрос в API (отправляет действие входа в систему).
  2. Сервер отправляет ошибку (отправляет действие signInFailure).

Но в В моем случае отправка signIn -> signInSuccess -> signInFailure. Помогите мне, пожалуйста.

UserService. js

return await axios.post(url, data)
  .then(response => { return response.data; })
  .catch(error => { throw error; });

действия. js

export const signInUser = (username, password) => dispatch => {
  dispatch(signIn({ username, password }));
  userService.signIn(username, password)
    .then(dispatch(signInSuccess()))
    .catch(error => dispatch(signInFailure(error)));
};

Решение

В UserService необходимо выдать ошибку. И тогда он отлично работает в действии.

Ответы [ 3 ]

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

Пожалуйста, используйте возврат в улове

return await axios.post(url, data)
  .then(response => { return response.data; })
  .catch(error => { return error; }); // Use return here
0 голосов
/ 12 февраля 2020

Я думаю, вы должны изменить его

.then (response => {return response.data;})

на

.then (response => {if (response.status === 200) return response.data; еще выдает новую ошибку ("error")})

Я думаю, что это происходит, когда API имеет ответ от сервера (он не собирается ловить).

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

Внесите изменения в эту функцию, как указано ниже:

export const signInUser = (username, password) => dispatch => {
  dispatch(signIn({ username, password }));
  userService.signIn(username, password)
    .then((res) => dispatch(signInSuccess()))
    .catch((error) => dispatch(signInFailure(error)));
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...