Maison >interface Web >js tutoriel >React restitue-t-il toujours les composants en cas de changement d'état ?

React restitue-t-il toujours les composants en cas de changement d'état ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-12 21:41:02575parcourir

Does React Always Re-render Components on State Change?

ReactJS - React restitue tous les composants en cas de changement d'état

React restitue-t-il toujours les composants lors de l'invocation de setState ?

Oui, c'est le cas, par défaut.

React utilise une méthode shouldComponentUpdate au sein de chaque composant, chargée de déterminer s'il doit être restitué lorsque son état ou ses accessoires changent. Cependant, l'implémentation par défaut de cette méthode renvoie toujours true, ce qui entraîne un nouveau rendu à chaque fois.

Pourquoi React effectue-t-il un nouveau rendu même lorsque l'état reste inchangé ?

Le processus de re-rendu se compose de deux étapes :

  1. Rendu DOM virtuel : Lors de l'invocation du rendu, React crée une nouvelle structure DOM virtuelle. Notez que cela se produit chaque fois que setState() est appelé, quel que soit le changement réel de l'état.
  2. Rendu DOM natif : React met à jour le DOM réel uniquement lorsque cela est nécessaire, en fonction des modifications du DOM virtuel. C'est là que les capacités d'optimisation de React entrent en jeu, minimisant les mutations du DOM.

Dans l'exemple fourni, les composants Main et TimeInChild sont restitués lors du clic sur le bouton, malgré l'état inchangé, car l'implémentation par défaut de ShouldComponentUpdate renvoie true. Pour éviter cela, vous pouvez remplacer ShouldComponentUpdate pour effectuer une comparaison d'état ou d'accessoires et renvoyer false lorsqu'il n'y a aucun changement significatif.

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