Всем привет все мы знаем , что
Вообще не факт.
const one = async () => { console.log(1) }
const two = async () => { console.log(2) }
await one()
await two() // Выведет 1 потом 2
Вот так - факт.
Метод checkAuth синхронный, смысла делать его async нет.
Вот, что происходит в вашем случае:
dispatch(loginUser(data)); // должна отработать первее
Не должна. Она асинхронна, поэтому ваш код
гарантированно не выполнится раньше, чем все остальные строки в слушателе события. Плюс в ней есть запрос к серверу, что еще больше гарантирует её выполнение после checkAuth.
dispatch(checkAuth()); // должна отработать позже
Не должна по причине, указанной выше.
Достаточно простого фикса:
onClick={async () => {
setEmail("");
setPassword("");
await dispatch(loginUser(data)); // теперь мы точно дожидаемся выполнения
dispatch(checkAuth()); // эту функцию следует просто сделать синхронной, добавлять здесь await не стоит.
}}