Вопрос проверяет понимание мемоизации значений и функций в функциональных компонентах.
useMemo мемоизирует вычисляемое значение.useCallback мемоизирует функцию.
Оба хука зависят от массива зависимостей.
Они используются для оптимизации перерендеров.
Оба хука решают похожую задачу, но применяются в разных ситуациях.
useMemo — мемоизирует результат вычисления
useCallback — мемоизирует ссылку на функцию
useMemoИспользуется для тяжёлых вычислений:
const total = useMemo(() => {
// сложное вычисление
return price * count;
}, [price, count]);
useCallbackИспользуется для стабилизации функций:
const handleClick = useCallback(() => {
setCount(c => c + 1);
}, []);
Без мемоизации:
функции и объекты создаются заново
React.memo не работает
растёт число перерендеров
Часто:
используют хуки без необходимости
усложняют код без выигрыша в производительности
useMemo применяют для значений, useCallback — для функций. Использовать их стоит только при реальной необходимости.