⊗jsrtPmHkAMe 15 of 47 menu

API memo dans React

Avant d'examiner le prochain hook, il est nécessaire de mentionner l'API utile memo, qui nous aide à éviter le re-rendu d'un composant, si ses props restent inchangées.

Analysons cela avec un exemple. Créons un composant App, qui contiendra deux champs de saisie, pour, supposons, le prénom et le nom de famille :

return ( <div> <label> name: <input value={name} onChange={(e) => setName(e.target.value)} /> </label> <br /> <label> surname: <input value={surn} onChange={(e) => setSurn(e.target.value)} /> </label> </div> );

Ajoutons en haut du composant les états pour ceux-ci :

const [name, setName] = useState(''); const [surn, setSurn] = useState('');

Créons également un composant enfant Child.js, qu'il affiche une salutation, dans laquelle sera affiché le prénom saisi. Aussi, dans la console, sera affichée la chaîne 'child render' à chaque rendu de ce composant :

function Child({ name }) { console.log('child render'); return <h3>Hello {name}!</h3>; }

Ajoutons Child dans le rendu du composant principal après le dernier champ de saisie et passons-lui le prénom en tant que prop :

<Child name={name} />

Importons-le dans le composant principal :

import Child from './Child';

Ouvrons maintenant la console et saisissons le prénom et le nom dans les champs. Ici nous verrons que même en saisissant des caractères dans le champ pour le nom de famille, notre composant enfant sera re-rendu à chaque fois. Aucun problème, car notre composant est petit. Mais imaginez si ce composant affichait une grande quantité de données et était en même temps re-rendu à chaque fois.

Maintenant, enveloppons le composant enfant dans memo, et observons comment le rendu change. Pour commencer, importons memo dans celui-ci :

import { memo } from 'react';

Ensuite, créons une nouvelle variable et assignons-lui notre Child, enveloppé dans memo. Nous obtiendrons l'expression déclaration de fonction suivante :

const Child = memo( function Child({ name }) { console.log('child render'); return <h3>Hello {name}!</h3>; });

Ouvrons la console et saisissons à nouveau le prénom et le nom dans les champs. Maintenant, nous voyons qu'en saisissant le nom de famille, notre composant enfant ne se re-rend pas.

Il faut se rappeler que cela ne fonctionnera pas si, avec des props inchangées, les états utilisés par le composant changent ou le contexte utilisant les changements.

Prenez le code du composant App, que nous avons fait dans cette leçon, laissez-y seulement le premier champ de saisie. Créez un composant React Text, contenant un paragraphe avec le texte 'long text', et placez-le dans App après le champ de saisie.

Dans le composant Text, ajoutez la ligne console.log('text render');. Assurez-vous qu'à la saisie de caractères dans le champ, le composant Text se re-rend à chaque fois.

Maintenant, enveloppez le composant Text dans memo. Assurez-vous qu'à la saisie de caractères dans le champ, le composant Text ne se re-rend pas de manière répétée.

Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser