Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про React: function, reference

Почему передача функций через props может ломать мемоизацию?

Вопрос проверяет понимание ссылочной семантики функций и её влияния на оптимизацию.

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

Функции в JavaScript — это объекты, и при каждом рендере создаётся новая функция. Для React.memo это выглядит как изменение пропса. В результате мемоизация не срабатывает. Даже если логика функции не меняется, ссылка на неё новая. Это частая причина бесполезного использования React.memo.

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

Чтобы понять проблему, важно помнить, как создаются функции в JavaScript.

Почему ссылка меняется

При каждом рендере:

<Component onClick={() => doSomething()} />

Создаётся:

  • новая функция

  • новая ссылка

  • новый проп

Для React.memo это означает, что проп изменился.

Последствия

Из-за этого:

  • дочерний компонент перерендеривается

  • мемоизация теряет смысл

  • оптимизация не работает

Даже если функция делает одно и то же, React не может это определить.

Частая ошибка

Использование React.memo без стабилизации функций:

  • создаёт ложное ощущение оптимизации

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

  • не даёт выигрыша в производительности

Вывод

Передача функций через props ломает мемоизацию из-за изменения ссылки. Это нормальное поведение JavaScript, а не баг React.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • React

    React

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

#function

#reference

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