React.memo est un composant d'ordre supérieur (HOC) qui permet d'optimiser les performances des composants React en évitant les nouveaux rendus inutiles. Il est utilisé pour mémoriser les composants fonctionnels, ce qui signifie que React ignorera le rendu du composant si ses accessoires n'ont pas changé. Ceci est particulièrement utile pour l'optimisation des performances dans les grandes applications React où le nouveau rendu peut être coûteux.
React.memo fonctionne en effectuant une comparaison superficielle des accessoires du composant. Si les accessoires sont les mêmes que ceux du rendu précédent, React ignorera le rendu du composant et utilisera à la place le résultat du rendu précédent. Cela peut réduire considérablement le nombre de nouveaux rendus et améliorer les performances, en particulier lors du rendu de listes volumineuses ou de composants coûteux.
const MemoizedComponent = React.memo(Component);
Où :
Regardons un exemple simple de la façon dont React.memo peut être utilisé :
import React, { useState } from 'react'; const ChildComponent = React.memo(({ name }) => { console.log("Child component re-rendered"); return <div>Hello, {name}!</div>; }); function App() { const [name, setName] = useState('John'); const [count, setCount] = useState(0); return ( <div> <ChildComponent name={name} /> <button onClick={() => setName('Doe')}>Change Name</button> <button onClick={() => setCount(count + 1)}>Increment Count</button> <p>Count: {count}</p> </div> ); } export default App;
Par défaut, React.memo effectue une comparaison superficielle des accessoires, mais vous pouvez fournir une fonction de comparaison personnalisée si vous avez besoin de plus de contrôle sur la façon dont les accessoires sont comparés.
La fonction de comparaison personnalisée doit renvoyer true si le composant ne doit pas être restitué et false s'il le doit.
const ChildComponent = React.memo( ({ name, age }) => { console.log("Child component re-rendered"); return <div>Hello, {name}, {age}!</div>; }, (prevProps, nextProps) => { // Custom comparison: only re-render if name changes return prevProps.name === nextProps.name; } ); function App() { const [name, setName] = useState('John'); const [age, setAge] = useState(30); return ( <div> <ChildComponent name={name} age={age} /> <button onClick={() => setName('Doe')}>Change Name</button> <button onClick={() => setAge(age + 1)}>Increment Age</button> </div> ); }
Dans cet exemple, le ChildComponent ne sera restitué que lorsque la prop de nom change, même si la prop d'âge change, grâce à la fonction de comparaison personnalisée.
React.memo est un outil d'optimisation simple mais puissant dans React pour éviter les nouveaux rendus inutiles des composants fonctionnels. En mémorisant les composants et en utilisant une comparaison d'accessoires superficielle (ou une fonction de comparaison personnalisée), React peut ignorer le rendu de ces composants lorsque leurs accessoires n'ont pas changé, ce qui entraîne des améliorations de performances, en particulier dans les applications volumineuses ou complexes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!