> Как работают useMemo и useCallback для оптимизации производительности React-компонентов (React)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Иннотех, Альфа-банк, Kvando Technologies, Soft_Media_Group, ООО Премиум ИТ Солюшен, Spotware, ITFB, Домклик, IT-One, Софт Медиа Групп, EPAM, ООО Рокет Тех, ПСБ, intelsy, Арго, Evercode, Кэтрид Диджитал, Билайн
Стек: React
> Пример ответа
useMemo и useCallback - это хуки React для мемоизации, которые предотвращают лишние вычисления и перерисовки компонентов.
useMemo кеширует результат вычисления функции и обновляет его только при изменении зависимостей. Используется для дорогостоящих вычислений, которые не должны выполняться при каждом рендере:
JSXconst expensiveValue = useMemo(() => {return computeExpensiveValue(a, b);}, [a, b]);
Если a и b не изменились, expensiveValue останется прежним.
useCallback кеширует саму функцию, а не её результат. Возвращает ту же ссылку на функцию, пока зависимости не изменятся. Это полезно для передачи стабильных колбэков дочерним компонентам, обёрнутым в React.memo:
JSXconst handleClick = useCallback(() => {doSomething(a, b);}, [a, b]);
Без useCallback новая функция создавалась бы при каждом рендере, что ломало бы мемоизацию дочернего компонента.
Важно: злоупотребление этими хуками может ухудшить производительность из-за накладных расходов на сравнение зависимостей. Используйте их только при реальных проблемах с производительностью, подтверждённых профилированием.
> Похожие задачи по frontend
Какой роутер используется в React: нативный или сторонний
Зачем нужен React.Fragment
На каких стадиях жизненного цикла React-компонента срабатывает useEffect?
Что функция, передаваемая в useEffect, может возвращать и зачем
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью