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

UseEffect Comment ignorer le rendu initial et déclencher uniquement après tout changement de dépendance

DDD
Libérer: 2024-10-02 06:34:29
original
1005 Les gens l'ont consulté

UseEffect How To Skip Initial Render And Only Trigger After Any Dependecy Change

J'espère que vous allez bien, je vois que vous êtes un peu frustré par le bit useEffect, mais ne vous inquiétez pas, réparons-le ensemble et résolvons le problème.

Pourquoi Heppen : Mon mec useEffect est vraiment simple : il s'exécute également après le JSX chaque fois qu'une valeur de son tableau de dépendances change. mais parfois useEffect se déclenche même si les données du tableau de dépendances n'ont pas changé. Cela se produit en raison du rendu initial.

Solution : la mienne pourrait être une approche différente de la vôtre. Si je fais une erreur, dites-le-moi et oui, cela fonctionne, alors plongeons-nous

Étape 1 : créer 2 useref dans mon cas son composantA.tsx
Nous utiliserons deux références pour contrôler le comportement de rendu initial :

const skippedInitialRender = useRef(false);
const wasInitialRender = useRef(false);

Étape 2 : créer le useEffect

useEffect(() => {
        if(skippedInitialRender.current) {
            // After the first render, the value changes and this block will run
        }
        const currentTimeout = setTimeout(() => {
            wasInitialRender.current = true;
            skippedInitialRender.current = true;
        }, 200);
        return () => clearTimeout(currentTimeout);
    }, [value])
Copier après la connexion

*Étape 3 : * exécutez votre logique à l'intérieur de l'instruction if et c'est fait

*Explication : * Lors du rendu initial, nous retardons l'exécution en utilisant setTimeout. Cela garantit que peu importe le nombre de déclenchements de useEffect lors des rendus initiaux (2, 4 ou plus), notre logique ne fonctionnera pas. La logique ne s'exécute que lorsque la valeur de dépendance change à nouveau après le rendu initial.

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:dev.to
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!