Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: React, re-render, state update, component lifecycle

Какие компоненты перерендерятся при клике на кнопку и почему?

Вопрос проверяет понимание механизма ререндера в React при изменении состояния, включая работу с вложенными компонентами и оптимизацию.

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

При клике на кнопку в React вызывается функция setState, которая обновляет состояние компонента. Это приводит к ререндеру самого компонента и всех его дочерних компонентов, если они не оптимизированы с помощью React.memo или PureComponent. Ререндер происходит из-за того, что React сравнивает виртуальный DOM и обновляет реальный DOM только при изменениях.

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

Как работает ререндер в React

Когда пользователь кликает на кнопку, вызывается обработчик события, который обновляет состояние через setState. React помечает компонент как 'грязный' и планирует ререндер. При ререндере React вызывает функцию компонента (или метод render для классовых компонентов) и сравнивает полученный виртуальный DOM с предыдущим.

Какие компоненты перерендерятся

  • Компонент, в котором произошло изменение состояния, перерендеривается всегда.
  • Все его дочерние компоненты также перерендериваются по умолчанию, даже если их пропсы не изменились.
  • Если дочерний компонент обернут в React.memo или является PureComponent, он перерендерится только при изменении его пропсов.

Пример кода

function Parent() {
  const [count, setCount] = useState(0);
  return (
    <div>
      <button onClick={() => setCount(count + 1)}>Click</button>
      <Child />
    </div>
  );
}

const Child = React.memo(() => {
  console.log('Child rendered');
  return <div>Child</div>
});

В этом примере при клике на кнопку Parent перерендерится, но Child не перерендерится благодаря React.memo, так как его пропсы не изменились.

Вывод

Понимание механизма ререндера помогает оптимизировать производительность React-приложений, особенно при работе с большими деревьями компонентов. Используйте React.memo, useMemo и useCallback для предотвращения лишних ререндеров.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    5

  • Сложность:

    4

Навыки

  • JavaScript

    JavaScript

  • React

    React

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

#React

#re-render

#state update

#component lifecycle

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию