В чем разница между useMemo и useEffect

«В чем разница между useMemo и useEffect» — вопрос из категории React, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

useMemo и useEffect служат разным целям в React.

useMemo используется для мемоизации (кэширования) вычислений, чтобы избежать повторных дорогостоящих вычислений при каждом рендере. Он возвращает мемоизированное значение и пересчитывает его только при изменении зависимостей.

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

useEffect предназначен для выполнения побочных эффектов (запросы к API, подписки, ручное изменение DOM) после рендера. Он не возвращает значения, а принимает функцию с эффектом и массив зависимостей.

useEffect(() => {
  fetchData().then(data => setData(data));
}, [dependency]);

Ключевые различия:

  • useMemo — для оптимизации вычислений, синхронный.
  • useEffect — для побочных эффектов, асинхронный.