Etat des lieux

Tous les composants React ont et maintiennent leur state et leurs props. Dès qu’un changement intervient sur ce state ou ces props il est normal de penser que le composant doit être de nouveau rendu pour appliquer ces changements au DOM. À l’inverse, s’il n’y a aucun changement, on se dit naturellement que le composant ne va pas être rendu. Mais parfois, sans comprendre pourquoi, un composant va rendre un nouveau DOM. Cela peut entrainer des ralentissements sur l’application.

Quand cela se produit, comment faire pour déceler ces rendus intempestifs ? Utiliser les hooks de lifecycle, utiliser useEffect et remplir votre composant de console.log. C’est un peu “archaïque” comme moyen de debug.

La solution React-Developer-Tools

Si vous bossez déjà avec React, vous devez déjà l’avoir installée, si ce n’est pas déjà fait qu’attendez-vous 😱.

Cette extension propose une fonctionnalité bien pratique pour mettre en évidence le rendu de chaque composant de votre application. Le Highlight.

  • Ouvrez votre console navigateur
  • onglet Components
  • cliquez sur l’icone de roue ⚙️
  • dans la modal qui apparait restez dans l’onglet General
  • Cochez la case Highlight updates when components render.

Maintenant vous pouvez intéragir avec votre composant et vous verrez un entourage de couleur qui va tendre du vert au orange foncé en fonction du rendu des composants. Si votre application entière s’illumine comme un sapin de noël 🎄 c’est signe qu’il est temps de vous poser la question de la refacto !

Et après ?

Si vous avez des problèmes de rendu superflu, je vous invite à aller parcourir la doc de React et à regarder la section useMemo cela vous donnera quelques idées d’optimisation possible.