Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про React: render, uselayouteffect, useeffect

В каком порядке выполняются render, useLayoutEffect и useEffect?

Вопрос проверяет понимание фаз рендера React и различий между useLayoutEffect и useEffect.

Короткий ответ

Сначала React выполняет render, затем на этапе коммита вызывается useLayoutEffect, и только после отрисовки браузером вызывается useEffect. useLayoutEffect выполняется синхронно и блокирует отрисовку, а useEffect — асинхронно, после paint. Поэтому useLayoutEffect используют для работы с layout, а useEffect — для побочных эффектов, не влияющих на разметку.

Длинный ответ

React разделяет обновление UI на несколько фаз, и хуки привязаны к этим фазам.

Определение

  • Render — вычисление JSX и виртуального дерева.

  • Commit phase — применение изменений к DOM.

  • Paint — отрисовка браузером.

Порядок выполнения

  1. render

    • Вызывается функция компонента.

    • Рассчитывается JSX.

    • DOM ещё не обновлён.

  2. Commit phase

    • Обновляется реальный DOM.

    • Вызывается useLayoutEffect.

  3. Paint

    • Браузер рисует обновлённый UI.

  4. useEffect

    • Выполняется после отрисовки.

Визуально

render → DOM update → useLayoutEffect → paint → useEffect

useLayoutEffect

useLayoutEffect(() => {
  // измерение размеров DOM
}, []);

Особенности

  1. Выполняется синхронно.

  2. Блокирует отрисовку.

  3. Подходит для измерений и синхронных изменений DOM.

useEffect

useEffect(() => {
  // запросы, подписки, логика
}, []);

Особенности

  1. Не блокирует отрисовку.

  2. Выполняется после paint.

  3. Предпочтителен в большинстве случаев.

Вывод

useLayoutEffect нужен, когда важно вмешаться до отрисовки, а useEffect — когда эффект не влияет на layout.

Уровень

  • Рейтинг:

    5

  • Сложность:

    7

Навыки

  • React

    React

Ключевые слова

#render

#uselayouteffect

#useeffect

Подпишись на React Developer в телеграм