almessadi.
Retour à l'index

Le compilateur React réduit le travail de mémoïsation. Il ne l'élimine pas._

Le compilateur React peut supprimer certains frais généraux de mémoïsation manuelle, mais ce n'est pas une instruction globale pour supprimer chaque `useMemo` et `useCallback`.

Publié2 mai 2024
Temps de lecture6 min read

Le compilateur React est important car il modifie qui est responsable de certaines optimisations de rendu.

Historiquement, les équipes React utilisaient :

  • useMemo
  • useCallback
  • React.memo

pour empêcher les recalculs inutiles et réduire le nombre de re-rendus.

Cela fonctionnait, mais cela créait également un code bruyant, fragile et facile à mal interpréter.

Ce que le compilateur change réellement

Le compilateur peut analyser le code des composants et appliquer automatiquement des optimisations semblables à la mémoïsation lorsque le code suit des modèles dont il peut raisonnablement déduire la sécurité.

Cela signifie que certaines mémoïsations manuelles deviennent inutiles.

Le mot important est certaines.

Cela ne signifie pas :

  • que chaque useMemo devrait disparaître
  • que chaque useCallback est obsolète
  • que la performance est désormais automatique dans chaque codebase

Les compilateurs n'aident que là où ils peuvent prouver que la transformation est sécurisée.

Ce qui nécessite encore un jugement

Vous avez toujours besoin d'un jugement d'ingénierie concernant :

  • les calculs coûteux
  • les bibliothèques tierces avec des APIs sensibles aux références
  • des identités intentionnellement stables à travers les frontières
  • un code que le compilateur ne peut pas optimiser proprement

Ainsi, la meilleure conclusion à en tirer est :

"Utilisez moins de hooks de mémoïsation défensifs par défaut, et profilez les endroits qui comptent encore."

C'est une meilleure règle que "supprimez tous vos hooks."

Pourquoi cela reste un sujet important

La mémoïsation manuelle a toujours eu un coût de maintenance :

  • les tableaux de dépendance deviennent obsolètes
  • le code devient plus difficile à lire
  • les développeurs rabâchent des optimisations dans des endroits qui n'en ont pas besoin

Si le compilateur peut éliminer une partie de cette taxe, c'est une véritable amélioration tant en ergonomie qu'en exactitude.

Lectures complémentaires