Async-функция возвращает Promise, поэтому без await в state попадёт сам Promise, а не рассчитанные данные. Дождитесь результата внутри асинхронной функции в effect.
В useEffect вызывается async-функция calculateUserDataSync, а её результат передаётся в setUserData без await. В чём проблема и как это исправить?
Async-функция возвращает Promise, поэтому без await в state попадёт сам Promise, а не рассчитанные данные. Дождитесь результата внутри асинхронной функции в effect.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Async-функция возвращает Promise, поэтому без await в state попадёт сам Promise, а не рассчитанные данные. Дождитесь результата внутри асинхронной функции в effect.
Синхронный callback effect запускает async-операцию и возвращает cleanup, который отмечает её результат устаревшим или отменяет поддерживаемый запрос. После await проверяется актуальность и вызывается setUserData; ошибки обрабатываются отдельно. Не объявляйте сам callback useEffect async. Если данные вычисляются чисто и быстро, отдельное хранение производного результата в state может вообще не понадобиться.