Я создаю приложение React-Redux, использующее API, созданный с express. js.
У меня есть форма входа в систему, и я хочу отобразить сообщение пользователю, когда он / она пытается войти с неправильными учетными данными. Я пытался построить это поведение разными способами. Здесь у меня есть один очень логичный и полностью синхронный способ.
Я установил компонент входа в систему, вызывая функцию из userActions из его реквизита. Компоненты связаны с export default connect(null, { login, register })(Login);
.
Давайте посмотрим на вход в систему на данный момент. Я оставлю код для регистрации там, потому что я не знаю, если / как это влияет на мою функциональность входа в систему. Моя проблема в том, что я могу получить созданные уведомления, и вход в систему и проверка происходят, как и ожидалось, но я не могу получить статус "auth", который необходим для определения перенаправления.
I необходимо обработать 2 сценария ios:
- успешный вход в систему => перенаправление на '/' с отображением приветствия;
- сбой при входе => отобразить сообщение об ошибке на той же странице .
Я могу получить созданные уведомления, и вход в систему и проверка происходят, как и ожидалось, но я не могу получить статус "auth", который необходим для принятия решения о перенаправлении.
Может кто-нибудь помочь мне с этим? Спасибо!
метод onSubmit @ login. js:
onSubmit = async e => {
e.preventDefault();
const { name, email, password } = this.state;
// Check For Errors
{....}
// Register or login and notify user
let auth = false;
if (this.state.register) {
this.props.register({ name, email, password })
.then((res) => { auth = res.success; console.log(`register then: ${res}`); })
} else {
this.props.login({ email: email, password: password })
.then((res) => { auth = res.success; console.log(`login then: ${res}`); })
}
if (auth) { this.props.history.push('/') }
}
метод login @ userActions. js:
export const login = authData => async dispatch => {
axios.post('/api/v1/users/login', authData)
.then(res => {
beginSession(res);
dispatch({
type: LOGIN,
payload: res.data.user
});
notifyUser('login', dispatch, res);
return { success: true }
})
.catch(err => {
return { success: false }
});
};