Проблема в том, что authHandler
является асинхронной c функцией и использование ловушки внутри «нормальной» функции не работает. Это нарушает правило хуков .
Что вам нужно сделать, это отделить authHandler
и history.push('/dashboard')
.
Что вы можете сделать, это вернуть асин c запросите и используйте .then
для вызова history.push
.
const authHandler = async (email, password) => {
const authService = new AuthService();
// returning the request
return await authService
.login({
email,
password
})
};
И внутри вашего компонента вы используете ловушку useHistory
и вызываете authHandler
для какого-либо действия.
const MyComponent = () => {
const history = useHistory()
const onClick = (email, password) => {
authHandler(email, password)
.then(() => history.push('/dashboard'))
}
return (...)
}