Вопрос проверяет понимание оптимизации производительности с помощью мемоизации.
useMemo: Кэширует результат вычислений, пересчитывая только при изменении зависимостей.
useCallback: Кэширует функцию, предотвращая её пересоздание.
Оба помогают избежать лишних ререндеров.
1. useMemo:
Используется для тяжелых вычислений.
Пример:
const expensiveValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);2. useCallback:
Сохраняет ссылку на функцию между рендерами.
Пример:
const handleClick = useCallback(() => doSomething(a, b), [a, b]);Как работает мемоизация:
React запоминает значение/функцию и возвращает его, пока зависимости не изменились.
Без мемоизации при каждом рендере создаются новые объекты/функции, что может вызывать лишние ререндеры дочерних компонентов.
Вывод:
Используйте useMemo для значений, useCallback для функций, если они передаются в оптимизированные дочерние компоненты (например, React.memo).