PassFront
  1. PassFront
  2. База знаний
  3. Рендеринг и производительность

Когда вызывается функция Render в React?

Рендеринг и производительность

Render (функция компонента или метод render класса) вызывается в трёх ситуациях: первичное монтирование, обновление, StrictMode-повтор в dev.

Когда вызывается

Первичный рендер — при монтировании дерева:

createRoot(document.getElementById('root')).render(<App />);

Обновления — каждый раз, когда:

  • изменился state компонента (сеттер/dispatch с новым значением);
  • отрендерился родитель (каскад вниз — без проверки props, если нет React.memo);
  • изменился потребляемый контекст;
  • сработала подписка на внешний стор (useSelector и т.п.).

Служебные вызовы:

  • StrictMode в dev вызывает рендер дважды на каждое обновление — проверка чистоты функции;
  • при конкурентном рендеринге (React 18) начатый рендер может быть отброшен и вызван заново, если вклинилось срочное обновление.

Когда НЕ вызывается

  • Запись в ref, мутации без сеттера, сеттер с тем же значением (Object.is).
  • У React.memo-компонента при поверхностно равных props (если нет своих state/context-триггеров).

Свойства вызова

  • Render — чистая функция: без запросов, подписок, мутаций; побочные эффекты — в useEffect (после коммита).
  • Вызов render ≠ обновление DOM: дифф может не найти отличий.
  • Частота вызовов render — нормальная ситуация; проблемой становится, когда рендеры дорогие или каскад слишком широкий.

Коротко для собеседования

Render вызывается при монтировании и при каждом обновлении: свой state, рендер родителя, контекст, подписки. В dev StrictMode дублирует вызовы, конкурентный рендер может перезапускать их. Функция должна быть чистой, а её вызов не означает изменения DOM.

Другие вопросы раздела