В чем разница между useMemo и useCallback
Python
Middle
Без компании
В чем разница между useMemo и useCallback
Ответы
`useMemo` и `useCallback` оба служат для оптимизации производительности, но решают разные задачи.
**`useMemo`** кэширует результат вычислений и пересчитывает его только при изменении зависимостей:
```
import { useMemo } from 'react';
const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);
```
**`useCallback`** кэширует саму функцию, а не её результат. Полезно для предотвращения лишних ререндеров дочерних компонентов:
```
import { useCallback } from 'react';
const memoizedCallback = useCallback(() => {
doSomething(a, b);
}, [a, b]);
```
**Ключевые отличия:**
- `useMemo` — для значений, `useCallback` — для функций.
- `useCallback(fn, deps)` эквивалентен `useMemo(() => fn, deps)`.
- Используй `useCallback`, когда передаёшь функцию как проп в оптимизированные компоненты (например, `React.memo`).