Ответ
useMemo и useEffect служат разным целям в React.
useMemo используется для мемоизации (кэширования) вычислений, чтобы избежать повторных дорогостоящих вычислений при каждом рендере. Он возвращает мемоизированное значение и пересчитывает его только при изменении зависимостей.
const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);
useEffect предназначен для выполнения побочных эффектов (запросы к API, подписки, ручное изменение DOM) после рендера. Он не возвращает значения, а принимает функцию с эффектом и массив зависимостей.
useEffect(() => {
fetchData().then(data => setData(data));
}, [dependency]);
Ключевые различия:
useMemo— для оптимизации вычислений, синхронный.useEffect— для побочных эффектов, асинхронный.