Maison >interface Web >js tutoriel >React restitue-t-il les composants après chaque appel « setState() » ?

React restitue-t-il les composants après chaque appel « setState() » ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-29 00:20:11568parcourir

Does React Re-render Components After Every `setState()` Call?

ReactJS : rendu React après l'appel "setState"

Requête : re-rendu React avec "setState"

React restitue-t-il tous les composants et leurs sous-composants chaque fois que "setState()" est invoqué ?

Explication :

Oui, React déclenche le nouveau rendu par défaut après l'appel de "setState()".

Raison du comportement par défaut :

Bien que React vise à optimiser le rendu, il évite les bugs subtils causés par les mutations d'état en réexécutant toujours la méthode "render" lorsque l'état changements.

Méthode ShouldComponentUpdate :

Chaque composant a une méthode appelée "shouldComponentUpdate(nextProps, nextState)". Cette méthode détermine s'il faut réexécuter "render" en fonction des modifications apportées aux accessoires et à l'état.

Implémentation par défaut de ShouldComponentUpdate :

Par défaut, "shouldComponentUpdate" renvoie true, garantissant ainsi un nouveau rendu. chaque fois que l'état ou les accessoires changent.

Exemple :

Dans le code fourni extrait de code, le composant Main définit son état sur la même valeur (« moi ») chaque fois que l'utilisateur clique sur le texte. Même si l'état ne change pas, React restitue toujours les composants Main et TimeInChild car "shouldComponentUpdate" renvoie true par défaut.

Implémentation personnalisée ShouldComponentUpdate :

Vous pouvez optimiser le rendu en écrire une implémentation personnalisée de "shouldComponentUpdate" qui compare les anciens et nouveaux accessoires et l'état pour déterminer si un nouveau rendu est réel nécessaire.

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