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
JDK-Downloadadresse: http://www.oracle.com/techne...
Inhaltsverzeichnis npm Installieren des Loaders P...
Bibliotheksverwaltung Erstellen einer Bibliothek ...
Installationsumgebung: CentOS7 64-Bit, MySQL5.7 1...
Nur den oberen Rand anzeigen <table frame=above...
Beschreibung der HTML-Meta-Viewport-Attribute Was...
1. Was ist Responsive Design? Responsive Design b...
1. Laden Sie das Alpenbild herunter [root@docker4...
Ich lerne gerade MySQL. Ich bin ein kompletter Ne...
Inhaltsverzeichnis Vorwort Webpack-Deb-Server Sta...
Inhaltsverzeichnis Überblick Was sind Generika Sy...
Farbkontrast und Harmonie Unter kontrastierenden ...
In diesem Artikel wird die spezifische Methode zu...
Vorwort Durch das Erstellen von Verknüpfungen in ...
<br />Struktur und Hierarchie reduzieren die...