Hooki useCallback i useMemo w React są używane do optymalizacji wydajności komponentów funkcyjnych poprzez pamiętanie wartości między renderowaniami.
useCallback:
Zwraca zapamiętaną wersję funkcji, która jest zmieniana tylko wtedy, gdy zmieniają się zależności. Jest używany do optymalizacji przekazywania funkcji do komponentów potomnych.
const memoizedCallback = useCallback(() => { doSomething(a, b); }, [a, b]);
useMemo:
Zwraca zapamiętaną wartość, która jest ponownie obliczana tylko wtedy, gdy zmieniają się zależności. Jest używany do optymalizacji kosztownych obliczeń.
const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);
Różnice:
- Zastosowanie: 
useCallbackjest używany do zapamiętywania funkcji, podczas gdyuseMemojest używany do zapamiętywania wartości. - Składnia: 
useCallback(fn, deps)zwraca zapamiętaną wersję funkcjifn,useMemo(fn, deps)zwraca zapamiętaną wartość zwracaną przez funkcjęfn. - Optymalizacja: 
useCallbackpomaga zapobiegać ponownemu tworzeniu funkcji przy każdym renderowaniu, co jest przydatne przy przekazywaniu funkcji jako propsów.useMemopomaga zapobiegać kosztownym obliczeniom przy każdym renderowaniu. 
Przykład użycia obu hooków:
function MyComponent({ a, b }) { const memoizedCallback = useCallback(() => { doSomething(a, b); }, [a, b]); const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]); return ( <div> <ChildComponent onClick={memoizedCallback} value={memoizedValue} /> </div> ); }

