useMemo вычисляется во время render, а useEffect запускается после commit соответствующего результата.
Что выполнится раньше: `useMemo` или `useEffect`? В каких фазах React они выполняются — render phase или commit phase?
useMemo вычисляется во время render, а useEffect запускается после commit соответствующего результата.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
useMemo вычисляется во время render, а useEffect запускается после commit соответствующего результата.
Если render был отброшен, его effect не обязан выполняться. useMemo должен быть чистым, эффект синхронизирует внешние ресурсы. Порядок относительно browser paint у эффектов зависит от ситуации, поэтому «всегда после отрисовки экрана» — слишком сильное утверждение.