Maison > interface Web > js tutoriel > Pourquoi useEffect s'exécute-t-il lors du rendu initial dans React ?

Pourquoi useEffect s'exécute-t-il lors du rendu initial dans React ?

Mary-Kate Olsen
Libérer: 2024-11-16 02:08:02
original
521 Les gens l'ont consulté

Why Does useEffect Run on Initial Render in React?

Comment empêcher le hook useEffect de s'exécuter lors du rendu initial

La documentation React indique que la méthode de cycle de vie componentDidUpdate() n'est pas invoquée pendant le rendu initial. Cependant, lorsque vous utilisez le hook useEffect pour simuler composantDidUpdate(), il semble s'exécuter à chaque rendu, y compris le premier.

Explication

Le hook useEffect s'exécute après chaque cycle de rendu, y compris le cycle initial. Contrairement à la méthode composantDidUpdate(), elle n'a pas de vérification intégrée pour ignorer la première exécution.

Solution

Il existe deux approches pour résoudre ce problème :

1. Utilisation de useRef

Nous pouvons utiliser le hook useRef pour savoir si c'est la première fois que la fonction useEffect est appelée.

const isFirstRender = useRef(true);

useEffect(() => {
  if (isFirstRender.current) {
    isFirstRender.current = false;
    return; // Skip the first render
  }

  console.log("Component did update");
}, [<dependencies>]);
Copier après la connexion

2. L'utilisation de useLayoutEffect

useLayoutEffect est similaire à useEffect, mais elle s'exécute dans la même phase que componentDidUpdate(), qui se produit après les opérations DOM.

useLayoutEffect(() => {
  console.log("Component did update");
}, [<dependencies>]);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal