"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Maîtriser les rendus React : comment éviter les pièges courants

Maîtriser les rendus React : comment éviter les pièges courants

Publié le 2024-11-03
Parcourir:170

Mastering React Re-renders: How to Avoid Common Pitfalls

1. Introduction

Imaginez ceci : vous venez de créer une application React élégante et riche en fonctionnalités, mais tout à coup, les performances commencent à chuter. Les boutons semblent lents, les mises à jour des données prennent trop de temps et vous ne comprenez pas pourquoi. Si cela vous semble familier, vous n'êtes pas seul. Les rendus React, lorsqu'ils sont mal gérés, sont souvent les coupables silencieux des problèmes de performances.

La maîtrise des rendus dans React est cruciale pour les développeurs Web souhaitant créer des applications efficaces et évolutives. Examinons en profondeur le fonctionnement des re-rendus de React et découvrons des stratégies pratiques pour optimiser les performances, éviter les pièges courants et transformer votre application React en une expérience ultra-rapide.

2. Comment fonctionnent les nouveaux rendus React ?

Le mécanisme de re-rendu de React est l'une de ses fonctionnalités les plus puissantes. Il permet à votre application de mettre à jour dynamiquement l'interface utilisateur en fonction du changement d'état ou d'accessoires. Cependant, s'il n'est pas optimisé, ce processus peut conduire à des rendus inutiles, entraînant une dégradation des performances.

En termes simples, React effectue un nouveau rendu à chaque fois :

  1. L'état d'un composant change.
  2. Un composant reçoit de nouveaux accessoires.
  3. Le composant parent effectue un nouveau rendu.

Mais que se passe-t-il lorsqu'un composant est restitué trop souvent ? Le navigateur doit repeindre l'écran, ce qui entraîne des animations saccadées, des interactions lentes et des utilisateurs frustrés. Maintenant, demandez-vous : combien de fois votre application vous a-t-elle semblé lente et vous ne parvenez pas à mettre le doigt sur la raison ?

3. Pourquoi les rendus excessifs nuisent aux performances 

Les rendus excessifs créent un effet domino, rendant l'ensemble de votre application lent. Chaque fois qu'un nouveau rendu se produit :

  1. React réconcilie les modifications avec le DOM virtuel.
  2. Il calcule les mises à jour minimales à apporter au DOM actuel.
  3. Le navigateur repeint l'écran.

Dans les petites applications, cela peut passer inaperçu. Mais dans les applications volumineuses, avec des composants profondément imbriqués et une gestion d'état complexe, même le plus petit rendu inutile peut entraîner un goulot d'étranglement en termes de performances.

Voici un exemple simple :

const UserList = ({ users }) => {
  return users.map(user => 
{user.name}
); }; // Inside a parent component:

Imaginez maintenant que cette UserList soit restituée à chaque fois que le composant parent est mis à jour, même lorsque les utilisateurs n'ont pas changé. C'est là que réside le problème. Comment pouvons-nous éviter de tels rendus inutiles ?

4. Pièges courants (et comment les éviter)

Piège 1 : ne pas mémoriser les fonctions et les objets

Chaque fois qu'un composant parent effectue un nouveau rendu, il crée de nouvelles références de fonction et d'objet, même si les valeurs réelles n'ont pas changé. Cela entraîne un nouveau rendu inutile des composants enfants.

Action : utilisez les hooks useCallback et useMemo pour mémoriser des fonctions et des objets.

const ParentComponent = () => {
  const handleClick = useCallback(() => {
    // some function logic
  }, []);

  const userDetails = useMemo(() => ({ name: "Rajesh", age: 30 }), []);

  return ;
};

Pourquoi cela fonctionne : La mémorisation empêche la création de nouvelles références de fonctions et d'objets à chaque nouveau rendu, réduisant ainsi les rendus inutiles dans les composants enfants.

Piège 2 : Passer des fonctions ou des objets en ligne en tant qu'accessoires

Des fonctions ou objets en ligne sont créés à chaque fois qu'un composant est rendu, ce qui entraîne un nouveau rendu du composant récepteur, même si les valeurs réelles n'ont pas changé.

Action : Déclarez des fonctions et des objets en dehors du composant ou utilisez des hooks de mémorisation.

// Avoid this:
 console.log("clicked")} />

// Instead:
const handleClick = useCallback(() => console.log("clicked"), []);

Piège 3 : ne pas utiliser React.memo

Certains composants sont de nature pure : ils restituent toujours le même résultat avec les mêmes accessoires. Pourtant, sans React.memo, ils seront toujours restitués lorsque leur composant parent le fera.

Action : enveloppez les composants fonctionnels avec React.memo pour éviter les nouveaux rendus inutiles.

const ChildComponent = React.memo(({ data }) => {
  return 
{data.name}
; });

Pourquoi cela fonctionne : React.memo garantit que le composant n'est restitué que lorsque ses accessoires changent, évitant ainsi les rendus redondants.

5. Comment suivre et déboguer les re-rendus React

Vous êtes-vous déjà demandé : « Pourquoi mon composant est-il restitué ? » React DevTools fournit un excellent moyen de suivre les rendus et de comprendre où les choses ne vont pas.

  1. Activer « Mettre en surbrillance les mises à jour » : cela vous montre quels composants sont à nouveau rendus.
  2. Utilisez l'onglet « Profilateur » : il affiche les délais de rendu et aide à identifier les goulots d'étranglement.

Vous pouvez également utiliser des hooks personnalisés comme celui-ci pour enregistrer les nouveaux rendus :

const useWhyDidYouRender = (componentName, props) => {
  const previousProps = useRef(props);

  useEffect(() => {
    if (previousProps.current !== props) {
      console.log(`${componentName} re-rendered`);
      previousProps.current = props;
    }
  });
};

6. Meilleures pratiques pour optimiser les rendus React

1. Augmentez l'état en cas de besoin, pas toujours

Parfois, le fait d'élever l'état à un composant supérieur entraîne des rendus inutiles des composants enfants. Au lieu de cela, gérez l’État localement autant que possible.

2. Utilisez la clé à bon escient

Lors du rendu des listes, assurez-vous que chaque élément possède un accessoire clé stable et unique. Cela aide React à optimiser les rendus en identifiant les éléments qui ont changé.

3. Évitez de restituer les composants non montés

Cela peut entraîner des fuites de mémoire et des problèmes de performances. Utilisez la fonction de nettoyage useEffect pour éviter les nouveaux rendus dans les composants non montés.

useEffect(() => {
  return () => {
    // cleanup logic here
  };
}, []);

7. Résumé : Master React restitue

En bref, les nouveaux rendus React peuvent être une source cachée de problèmes de performances, mais avec les bonnes techniques, vous pouvez éviter les nouveaux rendus inutiles, maintenir la rapidité de votre application et garantir une expérience utilisateur fluide.

  • Mémorisez les fonctions et les objets pour éviter de restituer les composants enfants.
  • Utilisez React.memo pour arrêter les rendus inutiles dans les composants purs.
  • Exploitez React DevTools pour suivre, comprendre et déboguer les goulots d'étranglement des performances.

8. Application pratique : amélioration des performances grâce aux rendus intentionnels

La prochaine fois que vous optimiserez une application React, réfléchissez de manière critique à chaque nouveau rendu. Sont-ils nécessaires ? Que se passe-t-il si vous mémorisez cette fonction ? En appliquant ces stratégies, vous écrirez du code React plus simple et plus rapide et éviterez les pièges courants qui font trébucher même les développeurs les plus expérimentés.


Réflexion finale : Maintenant que vous avez appris les tenants et les aboutissants des rendus React, allez-y et appliquez ces optimisations à vos propres applications. Vous constaterez non seulement de meilleures performances, mais vous gagnerez également en confiance dans l'écriture de code React évolutif et maintenable !


Déclaration de sortie Cet article est réimprimé à: https://dev.to/paharihacker/masterring-react-reders-how-to-avoid-common-pitfalls-k01?1 s'il y a une violation, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3