Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про React: react, memo

По каким критериям React.memo решает, перерендеривать компонент или нет?

Вопрос проверяет понимание механизма мемоизации компонентов и критериев сравнения пропсов в React.

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

React.memo сравнивает пропсы текущего и предыдущего рендера. По умолчанию используется поверхностное сравнение. Если все пропсы считаются одинаковыми, компонент не перерендеривается. Если хотя бы один проп изменился, рендер происходит заново. Также можно передать собственную функцию сравнения.

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

React.memo — это инструмент оптимизации, который позволяет пропускать лишние рендеры компонентов.

Определение

React.memo — это HOC, который мемоизирует результат рендера функционального компонента на основе его пропсов.

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

По умолчанию React:

  • сравнивает пропсы по ссылке

  • использует Object.is

  • не делает глубокого сравнения

Пример:

const MyComponent = React.memo(function MyComponent({ value }) {
  return <div>{value}</div>;
});

Если value — примитив и не изменился, рендер будет пропущен.

Что считается изменением

Ререндер произойдёт, если:

  • изменился примитив (number, string, boolean)

  • передан новый объект

  • передана новая функция

  • изменился key

Пользовательская функция сравнения

Можно передать собственный компаратор:

React.memo(Component, (prevProps, nextProps) => {
  return prevProps.id === nextProps.id;
});

Но:

  • это усложняет код

  • может быть дороже, чем сам рендер

Ограничения

React.memo:

  • не предотвращает рендер родителя

  • не гарантирует ускорение

  • полезен только при дорогом рендере

Вывод

React.memo решает о перерендере на основе поверхностного сравнения пропсов. Эффективность зависит от стабильности передаваемых данных.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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

Уровень

  • Рейтинг:

    5

  • Сложность:

    7

Навыки

  • React

    React

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

#react

#memo

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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