React
useCallback
Memoize callback functions.
By EZ4Code Team
reacthook
Code
import { useState, useCallback, memo } from 'react';
// Child component (memo optimized)
const Button = memo(function Button({ onClick, label }) {
console.log('Button render:', label);
return <button onClick={onClick}>{label}</button>;
});
function Toolbar() {
const [count, setCount] = useState(0);
const [text, setText] = useState('');
// Without useCallback: new function every render
// const handleClick = () => setCount(c => c + 1);
// With useCallback: stable reference
const handleClick = useCallback(() => {
setCount(c => c + 1);
}, []);
const handleChange = useCallback((e) => {
setText(e.target.value);
}, []);
return (
<div>
<p>Count: {count}</p>
<Button onClick={handleClick} label="Increment" />
<input value={text} onChange={handleChange} />
</div>
);
}
// Dependency parameter
function SearchBar({ onSearch }) {
const [query, setQuery] = useState('');
const handleSearch = useCallback(() => {
onSearch(query);
}, [query, onSearch]);
return (
<div>
<input value={query} onChange={e => setQuery(e.target.value)} />
<button onClick={handleSearch}>Search</button>
</div>
);
}Explanation
useCallback memoizes function references, working with memo child components to avoid unnecessary re-renders.
More React Snippets
Controlled Form with Validation
Build a controlled React form with inline validation and error messages.
Event Handling and List Rendering
Handle events and render dynamic lists with keys in React.
useState
State management Hook.
useEffect
Side-effect Hook.
useContext
Shared state via context.
useReducer
Complex state management.