🔁 useCallback() in React
The useCallback()
hook memoizes a function — preventing it from being recreated on every render unless its dependencies change.
🧩 1. Why useCallback?
Without useCallback()
, child components receiving functions as props may re-render unnecessarily.
import { useCallback, useState } from 'react';
function Parent() {
const [count, setCount] = useState(0);
const handleClick = useCallback(() => {
console.log('Button clicked');
}, []);
return (
<>
<Child onClick={handleClick} />
<button onClick={() => setCount(count + 1)}>Increment</button>
</>
);
}
function Child({ onClick }) {
console.log('Child rendered');
return <button onClick={onClick}>Click Me</button>;
}
⚙️ 2. Syntax
const memoizedFn = useCallback(() => {
// function logic
}, [dependency1, dependency2]);
🚀 3. When to Use
- Passing callbacks to memoized child components
- Preventing unnecessary renders
- Stable function reference across renders
🛑 4. Avoid Overuse
Only use useCallback()
when you actually see performance issues. Adding unnecessary hooks can clutter your code.
For memoizing values instead of functions, use useMemo()
.