Skip to main content

Explain React.memo, useMemo, and useCallback

Answer

All three are memoization techniques to prevent unnecessary re-renders or recalculations.

Comparison

React.memo

Prevents re-render if props haven't changed:

const Child = React.memo(({ name }) => {
return <div>{name}</div>;
});

useMemo

Memoizes expensive calculations:

const expensiveValue = useMemo(() => {
return computeExpensiveValue(a, b);
}, [a, b]);

useCallback

Memoizes function references:

const handleClick = useCallback(() => {
doSomething(id);
}, [id]);

When to Use

ToolUse When
React.memoChild receives same props frequently
useMemoExpensive calculations that don't need to re-run
useCallbackPassing callbacks to memoized children