Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про React: usecallback, memoization

Как сделать так, чтобы функция не ломала мемоизацию?

Вопрос проверяет знание хуков мемоизации и умение стабилизировать ссылки на функции.

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

Чтобы функция не ломала мемоизацию, её нужно мемоизировать. Для этого используют useCallback. Он возвращает одну и ту же ссылку между рендерами, пока зависимости не изменятся. Это позволяет React.memo корректно сравнивать пропсы. Но использовать useCallback стоит осознанно.

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

Решение проблемы нестабильных функций — управление ссылками.

Использование useCallback

useCallback мемоизирует функцию:

const handleClick = useCallback(() => {
  doSomething(id);
}, [id]);

Теперь:

  • ссылка на функцию стабильна

  • функция меняется только при изменении id

  • React.memo может корректно работать

Как выбрать зависимости

В массив зависимостей нужно включать:

  • все переменные из внешнего scope

  • значения, используемые внутри функции

Пропуск зависимостей приводит к:

  • устаревшим данным

  • логическим ошибкам

Когда useCallback не нужен

Не стоит использовать useCallback, если:

  • компонент не мемоизирован

  • функция не передаётся в дочерние компоненты

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

Цена мемоизации

useCallback:

  • хранит функцию в памяти

  • требует сравнения зависимостей

  • может быть дороже, чем пересоздание функции

Вывод

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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

Уровень

  • Рейтинг:

    5

  • Сложность:

    7

Навыки

  • React

    React

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

#usecallback

#memoization

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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