Heim >Web-Frontend >js-Tutorial >UseEffect So überspringen Sie das anfängliche Rendern und lösen es erst nach einer Abhängigkeitsänderung aus

UseEffect So überspringen Sie das anfängliche Rendern und lösen es erst nach einer Abhängigkeitsänderung aus

DDD
DDDOriginal
2024-10-02 06:34:291151Durchsuche

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

Ich hoffe, es geht dir gut. Ich sehe, dass du mit dem useEffect-Teil etwas frustriert warst, aber keine Sorge, lass uns das gemeinsam beheben und das Problem lösen.

Warum es passiert: Mein Typ useEffect ist wirklich unkompliziert: Es läuft nach dem JSX, auch wenn sich ein Wert in seinem Abhängigkeitsarray ändert. aber manchmal löst useEffect aus, obwohl sich die Daten im Abhängigkeitsarray nicht geändert haben. Dies ist auf das anfängliche Rendern zurückzuführen.

Lösung: Mein Ansatz könnte ein anderer sein als deiner. Wenn ich einen Fehler mache, sag es mir bitte und dann funktioniert das, also lass uns eintauchen

Schritt 1: Erstellen Sie 2 Benutzerreferenzen, in meinem Fall „componentA.tsx“
Wir verwenden zwei Refs, um das anfängliche Renderverhalten zu steuern:

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

Schritt 2: den useEffect erstellen

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])

*Schritt 3: * Führen Sie Ihre Logik innerhalb der if-Anweisung aus und fertig

*Erklärung: * Während des ersten Renderns verzögern wir die Ausführung mit setTimeout. Dadurch wird sichergestellt, dass unsere Logik nicht ausgeführt wird, egal wie oft useEffect beim ersten Rendern ausgelöst wird (2, 4 oder mehr). Die Logik wird nur ausgeführt, wenn sich der Abhängigkeitswert nach dem ersten Rendern erneut ändert.

Das obige ist der detaillierte Inhalt vonUseEffect So überspringen Sie das anfängliche Rendern und lösen es erst nach einer Abhängigkeitsänderung aus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn