В моем приложении React я использую Fomik для всех форм. Одной из них является форма входа, в которой используется следующий метод отправки:
onSubmit={(values, { setSubmitting }) => {
axios.post('/api/user/signin', values)
.then(
(res) => {
setSubmitting(false)
this.context.updateUser()
this.setState({
redirect: '/account'
})
},
(err) => {
this.setState({
apiError: err.response.data.message
})
setSubmitting(false)
}
)
}}
Затем моя контекстная функция:
<UserContext.Provider value={{
state: this.state,
updateUser: () => {
this.getUser().then(user => {
this.setState({
user
})
})
}
}}>
Метод getUser()
выполняет вызов API для моего сервера и возвращает данные пользователя, если они аутентифицированы.
Моя проблема в том, что при успешном входе в систему обновляется пользователь контекста, но перенаправление не работает, пока вы не нажмете кнопку входа во второй раз.
Любой идеи?