У меня есть форма для входа/регистрации, я хочу что бы если апи возвращает ошибку в форме отображалось сообщение.
Но я не могу разобраться в асинхронностью в редаксе (использую redux-thunk), я добавил
applyMiddleware(thunk), вот мой сабмит хендлер в компоненте формы:
,
const handleSubmit = (event) => {
event.preventDefault();
if (form.login) {
dispatch(loginUser(form))
} else {
dispatch(registerUser(form))
}
if(user.error!== null){ // вот этот код не срабатывает с первого раза, в user.error ещё не успело записаться сообщение с ошибкой
setError(user.error.message);
}
}
action
export const loginUser = (form) => dispatch => {
return $api.post(API_PATH.authUser, { // axios response
password: form.password,
email: form.email
}).then(res => {
const { token } = res.data;
localStorage.setItem('jwtToken', token);
dispatch({
type: LOGIN_SUCCESS,
payload: token
});
})
.catch(err => {
dispatch({
type: LOGIN_ERROR,
payload: err.response.data
});
});
};
Что делаю не так?
П.С. я понимаю что проверка идёт раньше чем редьюсер срабатывает, я по этому и спрашиваю, потому что думал что redux-thunk должен решать этот момент, я в комментарии написал как я решил проблему, но мне кажется, это не лучший, подход, поправьте как лучше бы написать