Реагируйте: setState не работает после вызова this.context.function () - PullRequest
1 голос
/ 01 апреля 2020

В моем приложении 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 для моего сервера и возвращает данные пользователя, если они аутентифицированы.

Моя проблема в том, что при успешном входе в систему обновляется пользователь контекста, но перенаправление не работает, пока вы не нажмете кнопку входа во второй раз.

Любой идеи?

...