// Composant enfant mémoïsé const ProductItem = React.memo(function ProductItem({ product, onSelect }) { console.log('ProductItem rendu:', product.name); return (
  • onSelect(product.id)}> {product.name}
  • ); }); // Composant parent function ProductList({ products }) { const [selected, setSelected] = useState(null); // SANS useCallback : nouvelle fonction à chaque rendu // → ProductItem est re-rendu même si product n'a pas changé const handleSelect = (id) => { setSelected(id); }; // AVEC useCallback : même fonction tant que les dépendances ne changent pas const handleSelectMemo = useCallback((id) => { setSelected(id); }, []); // [] car setSelected est stable return ( ); }