"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 > React Automatic Batching : comment minimiser les nouveaux rendus et améliorer les performances

React Automatic Batching : comment minimiser les nouveaux rendus et améliorer les performances

Publié le 2024-11-09
Parcourir:708

React Automatic Batching: How to Minimize Re-Renders and Boost Performance

Dans les grandes applications React, les rendus inutiles peuvent constituer un problème important, ralentissant les performances et rendant votre application lente. Avec React 18, le traitement par lots automatique permet d'optimiser les performances en réduisant les rendus inutiles, offrant ainsi aux développeurs un moyen plus efficace de gérer les mises à jour d'état. Ce guide vous expliquera le concept de traitement par lots automatique dans React 18, pourquoi il est important pour les performances et comment en tirer le meilleur parti dans vos applications.

Introduction : le problème des rendus inutiles dans les grandes applications React

Disons que vous préparez le dîner et qu'au lieu de préparer tous les plats en même temps, vous continuez à faire des allers-retours pour préparer chacun séparément, ce qui n'est évidemment pas efficace, n'est-ce pas ? La même chose se produit dans React lorsque les mises à jour d'état sont gérées une par une, provoquant plusieurs rendus au lieu d'un seul. Cela entraîne un gaspillage de traitement et un ralentissement des performances, en particulier dans les applications volumineuses.

Avant React 18, les mises à jour d'état qui se produisaient à proximité provoquaient souvent plusieurs nouveaux rendus. React 18 résout ce problème avec le traitement par lots automatique, qui regroupe plusieurs mises à jour en un seul cycle de rendu, ce qui entraîne moins de nouveaux rendus inutiles et améliore les performances.

Qu’est-ce que le traitement par lots automatique dans React 18 ?

Un aperçu de la nouvelle fonctionnalité

Le traitement par lots automatique est une fonctionnalité introduite dans React 18 qui permet à React de gérer plusieurs mises à jour d'état au sein du même événement ou effet, puis de déclencher un seul nouveau rendu. Cela minimise le nombre de rendus et améliore les performances globales de votre application.

Avant React 18, le traitement par lots n'était appliqué qu'à l'intérieur des gestionnaires d'événements. Cependant, React 18 étend le traitement par lots à toutes mises à jour au sein de fonctions asynchrones telles que setTimeout, les promesses et les écouteurs d'événements, ce qui le rend plus puissant et plus complet.

Exemple de mise en lots automatique

Voici un exemple du fonctionnement du traitement par lots automatique dans React 18 :

import { useState } from 'react';

function MyComponent() {
  const [count, setCount] = useState(0);
  const [text, setText] = useState('');

  function handleClick() {
    setCount(count   1);
    setText('Updated');
    // Both updates are batched, and only one re-render happens
  }

  return (
    

{count}

{text}

); }

Dans le code ci-dessus, les mises à jour d'état pour le nombre et le texte sont regroupées, déclenchant un seul nouveau rendu au lieu de deux. C'est grâce au traitement par lots automatique de React 18.

Pourquoi c'est important pour la performance

Comment il réduit les rendus inutiles

Dans React, chaque fois que l'état change, un nouveau rendu se produit. Si plusieurs mises à jour d'état se produisent les unes après les autres, comme dans un gestionnaire d'événements, React déclenchera généralement plusieurs rendus. Cela peut ralentir votre application, surtout à mesure qu'elle évolue.

Le traitement par lots automatique combine ces mises à jour d'état en une seule passe de rendu. Imaginez si vous remplissez un formulaire avec plusieurs champs et que chaque modification d'entrée entraîne le nouveau rendu de l'intégralité du formulaire. Grâce au traitement par lots automatique, React traite toutes ces modifications en une seule fois, ce qui rend l'interface utilisateur plus fluide et plus rapide.

Cas d'utilisation courants du traitement par lots automatique

Exemples de mises à jour d'état dans les gestionnaires d'événements et les effets

Le traitement par lots automatique fonctionne dans de nombreuses situations, notamment :

  1. Gestionnaires d'événements : réagissez aux mises à jour déjà groupées dans les gestionnaires d'événements, mais il est désormais encore plus efficace pour gérer plusieurs mises à jour sans rendus inutiles.
   function handleSubmit() {
     setFormSubmitted(true);
     setFormData({ ...formData, submittedAt: new Date() });
     // Only one re-render happens here
   }
  1. Effets et fonctions asynchrones : avec React 18, le traitement par lots fonctionne de manière transparente dans le code asynchrone comme setTimeout et promises.
   setTimeout(() => {
     setLoading(false);
     setUser({ name: 'John' });
     // These state changes are batched, so only one re-render
   }, 1000);

Cela signifie que même dans les opérations asynchrones, React peut regrouper plusieurs mises à jour, améliorant ainsi les performances et minimisant le nombre de nouveaux rendus.

Traitement par lots manuel avec flushSync : quand et pourquoi devriez-vous l'utiliser

Qu’est-ce que FluSync ?

Dans certains cas, vous devrez peut-être contrôler manuellement le moment où les mises à jour d'état se produisent, en particulier lorsque vous travaillez avec des animations ou des mises à jour critiques de l'interface utilisateur. C'est là qu'intervient flushSync. Il oblige React à traiter la mise à jour immédiatement au lieu de la regrouper avec d'autres mises à jour.

Quand utiliser flushSync

Vous devez utiliser flushSync dans les scénarios où vous devez vous assurer que l'état est mis à jour et reflété immédiatement dans le DOM, plutôt que d'attendre que React effectue des mises à jour par lots. Cela est souvent nécessaire dans les situations où le timing est crucial, comme les animations ou le retour visuel instantané.

Voici comment fonctionne flushSync :

import { flushSync } from 'react-dom';

function handleClick() {
  flushSync(() => {
    setCount(count   1);
  });
  // The DOM is updated immediately after the state change
  console.log('Count updated:', count);
}

Dans cet exemple, React traite immédiatement la mise à jour de setCount, garantissant que le DOM reflète immédiatement le changement, ce qui est utile pour les actions urgentes.

Conclusion : comment le traitement par lots aide à optimiser les performances de React dans les applications modernes

Le traitement par lots automatique de React 18 est une fonctionnalité révolutionnaire qui optimise les performances en réduisant les rendus inutiles, ce qui rend vos applications plus rapides et plus fluides. En regroupant les mises à jour d'état dans un seul rendu, React garantit que l'interface utilisateur de votre application reste réactive et efficace, même lorsqu'elle évolue.

Pour la plupart des cas d'utilisation, le traitement par lots automatique fonctionne parfaitement, mais si jamais vous avez besoin de plus de contrôle, vous pouvez utiliser flushSync pour gérer les mises à jour en temps réel.

En tirant parti de ces fonctionnalités, les développeurs peuvent désormais minimiser les rendus inutiles et améliorer les performances globales de leurs applications React, garantissant ainsi une meilleure expérience utilisateur.


Prêt à optimiser votre application React avec le traitement par lots automatique ? Essayez d'implémenter cette fonctionnalité dans votre prochain projet et voyez à quel point elle améliore les performances de votre application !


Si vous avez apprécié cet article, pensez à soutenir mon travail :

  • Achete-moi un café
  • Réservez un appel pour un mentorat ou des conseils de carrière
  • Suivez-moi sur Twitter
  • Connectez-vous sur LinkedIn
Déclaration de sortie Cet article est reproduit sur : https://dev.to/paharihacker/react-18-automatic-batching-how-to-minimize-re-renders-and-boost-performance-15oc?1 En cas de violation, veuillez contacter study_golang@163 .comdelete
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