Maison  >  Article  >  interface Web  >  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

Patricia Arquette
Patricia Arquetteoriginal
2024-10-23 06:27:02286parcourir

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 des performances plus lentes, 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 automatique, qui regroupe plusieurs mises à jour en un seul cycle de rendu, ce qui entraîne moins de 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 (
    <div>
      <p>{count}</p>
      <p>{text}</p>
      <button onClick={handleClick}>Update</button>
    </div>
  );
}

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 batching 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.
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 (
    <div>
      <p>{count}</p>
      <p>{text}</p>
      <button onClick={handleClick}>Update</button>
    </div>
  );
}
  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.
   function handleSubmit() {
     setFormSubmitted(true);
     setFormData({ ...formData, submittedAt: new Date() });
     // Only one re-render happens here
   }

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 fasse 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 :

   setTimeout(() => {
     setLoading(false);
     setUser({ name: 'John' });
     // These state changes are batched, so only one re-render
   }, 1000);

Dans cet exemple, React traite immédiatement la mise à jour 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 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 du mentorat ou des conseils de carrière
  • Suivez-moi sur Twitter
  • Connectez-vous sur LinkedIn

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn