Встречается на собеседованиях • сегодня

Можно ли вместо useMemo использовать useCallback

Да, но не всегда это будет эффективно. useMemo и useCallback схожи, но решают разные задачи:

  • useMemo кеширует результат вычислений.
  • useCallback кеширует саму функцию.

Пример замены useMemo на useCallback:

jsx
// useMemo
const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);

// useCallback (эквивалент)
const memoizedFn = useCallback(() => computeExpensiveValue(a, b), [a, b]);
const value = memoizedFn(); // вызов каждый рендер

text

Недостатки замены:
1. Функция будет создаваться заново при каждом рендере
2. Вычисление будет происходить при каждом вызове, а не только при изменении зависимостей

Лучше использовать `useMemo` для значений и `useCallback` для функций, которые нужно передать в дочерние компоненты.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы