Maison > interface Web > js tutoriel > le corps du texte

Comment empêcher useEffect de s'exécuter lors du rendu initial dans React ?

Barbara Streisand
Libérer: 2024-11-26 20:03:10
original
940 Les gens l'ont consulté

How to Prevent useEffect from Running on Initial Render in React?

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

Dans React, le hook useEffect fournit une fonctionnalité similaire à la méthode de cycle de vie composantDidUpdate. Cependant, contrairement à composantDidUpdate, useEffect s'exécute après chaque rendu, y compris le rendu initial. Cela peut être un comportement indésirable lorsque nous souhaitons que l'effet ne s'exécute qu'après des mises à jour ultérieures.

Pour empêcher useEffect de s'exécuter sur le rendu initial, nous pouvons exploiter deux approches :

Utiliser le hook useRef

Le hook useRef nous permet de stocker une valeur mutable qui persiste entre les rendus. Nous pouvons l'utiliser pour savoir si c'est la première fois que la fonction useEffect est invoquée.

const firstUpdate = useRef(true);
useLayoutEffect(() => {
  if (firstUpdate.current) {
    firstUpdate.current = false;
    return;
  }

  // Run the effect after the initial render
  console.log("useEffect ran after first render");
}, []);
Copier après la connexion

À l'aide du hook useLayoutEffect

Alternativement, nous pouvons utiliser le useLayoutEffect crochet. Contrairement à useEffect, useLayoutEffect s'exécute de manière synchrone après les mises à jour du DOM, ce qui est le même comportement que componentDidUpdate.

useLayoutEffect(() => {
  // Run the effect after the initial render
  console.log("useLayoutEffect ran after first render");
}, []);
Copier après la connexion

Ces approches empêchent efficacement useEffect de s'exécuter sur le rendu initial, garantissant que l'effet ne se produit qu'après mises à jour, tout comme ComponentDidUpdate.

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