Explain React useCallback vs useMemo

MediumTechnical
MetaFrontend Engineer
198

What are the differences between useCallback and useMemo hooks in React? When would you use one over the other? Provide examples.

2 Answers

156
Top Answer

useCallback

Returns a memoized function. Use when passing callbacks to child components.

const handleClick = useCallback(() => {
  console.log('Clicked!', count);
}, [count]); // Only recreates when count changes

useMemo

Returns a memoized value. Use for expensive computations.

const expensiveResult = useMemo(() => {
  return items.filter(i => i.active).map(i => i.value * 2);
}, [items]); // Only recalculates when items change

Key Difference

  • useCallback(fn, deps) = memoizes the function itself
  • useMemo(() => fn, deps) = memoizes the return value

Pro Tip

useCallback(fn, deps) is equivalent to useMemo(() => fn, deps)

ReactDev
98

Don't overuse these hooks! They have overhead.

Only use when:

  1. Passing callbacks to React.memo components
  2. The callback/value is in another hook's dependency array
  3. Computing something genuinely expensive
// DON'T do this - unnecessary overhead
const value = useMemo(() => a + b, [a, b]);

// DO this - simple calculation is fine
const value = a + b;

Profile first, optimize second!

PerformanceGuru

Share Your Answer

Help others by sharing your knowledge and experience with this question.

Coming soon...

Related Questions

View all

More from Meta

View all