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
Die von MySQL erstellte Optimierung besteht im Hi...
Da ich MySQL installieren muss, zeichne ich den I...
Die Front-End- und Back-End-Projekte sind getrenn...
Inhaltsverzeichnis 1. Vue-Lebenszyklus 2. Hook-Fu...
Inhaltsverzeichnis Zweck Modulinstallation Grundl...
1. Verwenden Sie den Befehl df, um die gesamte Fe...
> MySQL 5.7 Cluster Master und Slave bereitste...
Ich habe heute IE8 installiert. Als ich auf die M...
Vorwort Sie erhalten möglicherweise häufig Warn-E...
In diesem Artikel erfahren Sie mehr über die Inst...
1. Laden Sie das CentOS-Image herunter 1.1 Downlo...
Für Linux-Systemadministratoren ist es von entsch...
Verwenden von Cutecom für die serielle Kommunikat...
Vorwort In diesem Artikel wird der Vorgang zum He...
Inhaltsverzeichnis Phänomen: Portnutzung: Rechtsc...