


Warum feuert React's OnChange Event mehrmals nach dem Eintritt in einen Charakter?
Eingehende Diskussion über die Ursache des React-Onchange-Ereignisses, das mehrmals ausgelöst wird
Bei der React -Entwicklung ist onChange
-Ereignissen ein häufiges Problem, insbesondere wenn sie Zeichen in das Eingabefeld eingeben. In diesem Artikel werden die Gründe für dieses Phänomen ausführlich untersucht und Lösungen bereitgestellt.
Schauen wir uns zuerst einen Beispielcode an:
reag import, {usestate} aus "react"; Exportieren Sie die Standardfunktion myComponent () { const [inputValue, setInputValue] = usustate ({}); // Beachten Sie, dass dies der Objekttyp const Handlechange = (Ereignis) => {ist setInputValue (Event.Target.Value); console.log ("onchange ausgelöst:", InputValue); }; Zurückkehren ( <div> <input type="text" onchange="{handleChange}"> </div> ); }
In diesem Beispiel, wenn der Anfangswert von useState
ein Objekt {}
ist, führt jeder Eingang dazu, dass onChange
mehrmals feuert. Wenn Sie jedoch den Anfangswert in einen primitiven Typ wie useState("")
ändern, verschwindet das Problem. Warum?
Dies ist kein Fehler in React, sondern ein Ergebnis des kombinierten Effekts des React -Strict -Modus (Strictmode) und der asynchronen Eigenschaften von Zustandsaktualisierungen .
1. React Strict -Modus:
In einer Entwicklungsumgebung führt das Aktivieren des strengen Modus zusätzliche Überprüfungen durch, einschließlich zweier Renderings von Komponenten. Der erste Render wird verwendet, um Nebenwirkungen zu erkennen, und das zweite Render ist das tatsächliche DOM -Update.
2. Asynchrone Eigenschaften der Statusaktualisierung:
Zustandsaktualisierungen in React sind asynchron. Dies bedeutet, dass setInputValue
den Status der Komponente nicht sofort aktualisiert, sondern die Warteschlangen für den nächsten Rendering -Zyklus.
Bei Verwendung eines Objekts als Zustand:
- Erster Rendering: Komponentenrendern,
inputValue
ist{}
. - Eingabezeichen:
onChange
-Trigger,setInputValue
wird aufgerufen,inputValue
wird jedoch nicht sofort aktualisiert. - Zweites Rendering: React erkennt eine Statusaktualisierung und stellt die Komponente erneut ab. Zu diesem Zeitpunkt wird
inputValue
auf den neuen Wert aktualisiert.onChange
Fires erneut und drucken den aktualisierten Wert.
Wenn Sie den ursprünglichen Typ als Zustand verwenden:
- Erster Rendering: Komponentenrendering,
inputValue
ist""
. - Eingabezeichen:
onChange
-Trigger,setInputValue
wird aufgerufen. Obwohl das Update asynchron ist, löst das Update des ursprünglichen Typs kein zusätzliches Rendering aus.
Lösung:
Um zu vermeiden, dass onChange
-Ereignis mehrmals abgefeuert wird, können Sie die folgende Methode verwenden:
- Verwenden Sie funktionale Aktualisierung: Verwenden Sie
setInputValue
, um die Funktion zu aktualisieren:
const handlechange = (event) => { setInputValue ((PREVSTATE) => ({... PREVSTATE, Wert: Ereignis.Target.Value})); console.log ("onchange ausgelöst:", InputValue); };
Verwenden Sie Anti-Shake oder Drosselung: Wenn der häufige Betrieb des Eingangs erforderlich ist, können Sie Anti-Shake- oder Drosselungstechnologie verwenden, um die Auslöserfrequenz von
onChange
zu begrenzen.Vermeiden Sie den Status direkt in Onchange: Sie können den Eingangswert in einer Zwischenvariablen speichern und den Status bei Bedarf aktualisieren.
Durch das Verständnis des strengen Mechanismus von React und Zustandsaktualisierungsmechanismus können wir das Problem des onChange
-Ereignisses mehrmals effektiv lösen und effizientere und stabilere React -Code schreiben. Denken Sie daran, dass die Auswahl des richtigen Ausgangszustandstyps (primitive Typen sind normalerweise einfacher) und die Verwendung funktionaler Updates sind der Schlüssel.
Das obige ist der detaillierte Inhalt vonWarum feuert React's OnChange Event mehrmals nach dem Eintritt in einen Charakter?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Möchten Sie wissen, wie Sie untergeordnete Kategorien auf der Seite der übergeordneten Kategorie -Archivseite angezeigt werden? Wenn Sie eine Klassifizierungsarchivseite anpassen, müssen Sie dies möglicherweise tun, um es Ihren Besuchern nützlicher zu machen. In diesem Artikel zeigen wir Ihnen, wie Sie Kinderkategorien auf der Seite der Elternkategorie problemlos anzeigen können. Warum erscheinen Unterkategorien auf der Seite der übergeordneten Kategorie -Archiv -Seite? Indem Sie alle Kinderkategorien auf der Seite der übergeordneten Kategorie -Archiv -Seite anzeigen, können Sie sie für Besucher weniger allgemein und nützlicher machen. Wenn Sie beispielsweise einen WordPress-Blog über Bücher ausführen und eine Taxonomie namens "Thema" haben, können Sie Untertaxonomie wie "Roman", "Sachbücher" hinzufügen, damit Ihre Leser können

Wie erkennt die Redis -Caching -Lösung die Anforderungen der Produktranking -Liste? Während des Entwicklungsprozesses müssen wir uns häufig mit den Anforderungen der Ranglisten befassen, z. B. das Anzeigen eines ...

Faktoren der steigenden Preise für virtuelle Währung sind: 1. Erhöhte Marktnachfrage, 2. Verringertes Angebot, 3.. Rückgangsfaktoren umfassen: 1. Verringerte Marktnachfrage, 2. Erhöhtes Angebot, 3. Streik der negativen Nachrichten, 4. Pessimistische Marktstimmung, 5. makroökonomisches Umfeld.

Verstehen Sie die Zufälligkeit von kreisförmigen Abhängigkeiten beim Start des Frühlingsprojekts. Bei der Entwicklung des Frühlingsprojekts können Sie Zufälligkeit begegnen, die durch kreisförmige Abhängigkeiten beim Projektstart verursacht werden ...

Warum ist der Rückgabewert leer, wenn redistemplate für die Stapelabfrage verwendet wird? Bei Verwendung von Redistemplate für Batch -Abfragevorgänge können Sie auf die zurückgegebenen Ergebnisse stoßen ...

Die Optimierungslösung für Springboot-Timing-Aufgaben in einer Multi-Knoten-Umgebung ist die Entwicklung des Frühlings ...

Diskussion über die Gründe, warum JavaScript keine Benutzer -Computer -Hardware -Informationen in der täglichen Programmierung erhalten kann. Viele Entwickler werden neugierig sein, warum JavaScript nicht direkt erhalten werden kann ...

Concordium: Eine öffentliche Blockchain-Plattform der ersten Stufe, die die Privatsphäre und Compliance berücksichtigt, ist eine Blockchain-Plattform der öffentlichen ersten Stufe. Sein Kern liegt in der cleveren Integration der Identitätsprüfung mit Privatsphäre und regulatorischer Einhaltung. Die 2018 von Lars Seier Christensen gegründete Kerntechnologie der Plattform bettet kryptografische Identitäten auf die Protokollebene jeder Transaktion ein. Dieses einzigartige Design gewährleistet die Rückverfolgbarkeit der Verantwortung und schützt gleichzeitig die Privatsphäre des Benutzers und löst das Problem von Konflikten zwischen Anonymität und regulatorischen Anforderungen im Bereich Blockchain effektiv. Um dieses Problem zu lindern, verwendet Concordium Null Knowledge Proof (ZKP) -Technologie, sodass Benutzer bestimmte Identitätsattribute überprüfen können, ohne dass unnötige persönliche Informationen offengelegt werden müssen. Dies bedeutet, dass trotz jeder
