React useCallback Hook Cheat Sheet
What is `useCallback`?
A React Hook that memoizes a callback function, preventing it from being re-created on every render — useful for performance optimization.
import { useCallback } from "react";
Basic Syntax
const memoizedCallback = useCallback(() => {
// function body
}, [dependencies]);
When to Use It
- Passing callbacks to child components
- Preventing unnecessary re-renders
- Keeping the same function reference unless dependencies change
Example: Preventing Re-renders
const handleClick = useCallback(() => {
console.log("Clicked");
}, []);
<ChildComponent onClick={handleClick} />
If handleClick
wasn't memoized, ChildComponent
might re-render unnecessarily.
With Dependencies
const increment = useCallback(() => {
setCount((c) => c + 1);
}, []);
If you depend on a value:
const increment = useCallback(() => {
setCount(count + 1);
}, [count]);
Common Use Case: with `useMemo` or `React.memo`
const handleChange = useCallback((e) => {
setValue(e.target.value);
}, []);
const Input = React.memo(({ onChange }) => (
<input onChange={onChange} />
));