Ein sehr häufiges Szenario in const [Uhrwert, setzeUhrwert] = useState(''); const [andererWert1, setzeAnderenWert1] = useState(''); const [andererWert2, setzeAndererWert2] = useState(''); useEffect(() => { tuEtwas(andererWert1, andererWert2); }, [Uhrwert, andererWert1, andererWert2]); Wir möchten Hier kommt eine beunruhigende Frage:
Dieses Problem kann gelöst werden, indem const [Uhrwert, setzeUhrwert] = useState(''); const other1 = useRef(''); const other2 = useRef(''); // ref muss nicht zum Abhängigkeits-Array hinzugefügt werden, da die Referenz unverändert bleibt useEffect(() => { tuEtwas(anderes1.aktuell, anderes2.aktuell); }, [Uhrwert]); Auf diese Weise ändern sich die Variablenreferenzen von Dies ist bei Sie können die Funktionen von importiere { useState, useRef } von "react"; // Benutze das Referenzmerkmal von useRef und behalte dabei die Reaktionsfähigkeit von useState bei. Typ StateRefObj<T> = { _Zustand: T; Wert: T; }; Exportieren Sie die Standardfunktion useStateRef<T>( Anfangszustand: T | (() => T) ): StateRefObj<T> { // Initialisierungswert const [init] = useState(() => { wenn (Typ von Anfangszustand === "Funktion") { return (Initialstatus als () => T)(); } gib den Anfangszustand zurück; }); // Einen Status festlegen, um die Komponentendarstellung auszulösen const [, setState] = useState(init); // Beim Lesen des Werts wird der neuste Wert ermittelt // Beim Setzen des Werts wird „setState“ ausgelöst und die Komponente wird gerendert const [ref] = useState<StateRefObj<T>>(() => { zurückkehren { _state: init, Wert einstellen(v: T) { dieser._zustand = v; setzeZustand(v); }, Wert abrufen() { gib diesen Status zurück; }, }; }); // Zurückgegeben wird eine Referenzvariable, die während des gesamten Lebenszyklus der Komponente unverändert bleibt return ref; } Wir können es also folgendermaßen verwenden: const watch = useStateRef(''); const other1 = useStateRef(''); const other2 = useStateRef(''); // Ändern Sie den Wert wie folgt: watch.value = "new"; useEffect(() => { tuEtwas(anderer1.Wert, anderer2.Wert); // Tatsächlich sind diese drei Werte jetzt Referenzvariablen, die während des gesamten Lebenszyklus der Komponente unverändert bleiben, sodass keine Abhängigkeitsarrays hinzugefügt werden müssen. // Das eslint-Plugin von React-Hooks kann useRef jedoch nur als Referenz erkennen. Wenn es nicht hinzugefügt wird, wird es die Leute warnen. Aus Sicherheitsgründen wird es dennoch hinzugefügt. }, [watch.value, other1, other2]); Auf diese Weise verfügen Oben finden Sie die Details der React-Tipps, wie Sie die Probleme der Hook-Abhängigkeit beseitigen können. Weitere Informationen zur React-Hook-Abhängigkeit finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
>>: Installationstutorial für MySQL 5.7 unter CentOS 7
Inhaltsverzeichnis 1. Einführung in Podman 2. Vor...
Finden Sie das Problem Schauen wir uns zunächst d...
Inhaltsverzeichnis Problembeschreibung Was ist di...
Vorwort Heute habe ich das Erzeugungsmuster im En...
Inhaltsverzeichnis Vorwort Szenarien für die Verw...
1. Den aktuellen Hostnamen anzeigen [root@fangjia...
Vorwort Hallo zusammen, hier ist der CSS-Assisten...
In diesem Artikelbeispiel wird der spezifische Co...
String-Extraktion ohne Trennzeichen Fragenanforde...
In diesem Artikel wird hauptsächlich erläutert, w...
registrieren Das Front-End verwendet Axios in Vue...
[LeetCode] 197.Steigende Temperatur Schreiben Sie...
Die Verbindungsmethode in der MySQL-Tabelle ist e...
Vorwort Beim Schreiben von Frontend-Seiten verwen...
transform: scale(); Skalierung verursacht Jitter ...