Detaillierte Erklärung der React-Ereignisbindung

Detaillierte Erklärung der React-Ereignisbindung

1. Was ist

In react Anwendungen werden Ereignisnamen im CamelCase-Format geschrieben. Beispielsweise sollte onclick in onClick umgeschrieben werden.

Die einfachste Ereignisbindung ist wie folgt:

Klasse ShowAlert erweitert React.Component {
  zeigeAlarm() {
    console.log("Hallo");
  }

  rendern() {
    zurückgeben <button onClick={this.showAlert}>anzeigen</button>;
  }
}

Wie oben zu sehen ist, muss die Ereignisbindungsmethode mit {} umschlossen werden.

Der obige Code scheint in Ordnung zu sein, aber wenn der Ausgabecode der Verarbeitungsfunktion durch console.log(this) ersetzt wird und auf die Schaltfläche geklickt wird, ist die Konsolenausgabe undefined

2. Wie binde ich

Um das Problem der korrekten Ausgabe this zu lösen, lauten die gängigen Bindungsmethoden wie folgt:

  • Verwenden von „Bind“ in der Rendermethode
  • Verwenden von Pfeilfunktionen in der Rendermethode
  • Im Konstruktor binden
  • Verwenden der Pfeilfunktionsbindung in der Definitionsphase

Verwenden von „Bind“ in der Rendermethode

Wenn Sie eine Klassenkomponente verwenden und einer Komponente/einem Element ein onClick -Attribut zuweisen, wird this jetzt automatisch an die aktuelle Komponente gebunden. Die Lösung für dieses Problem besteht darin, nach der Ereignisfunktion .bind(this) zu verwenden, um this an die aktuelle Komponente zu binden.

Klasse App erweitert React.Component {
  handleKlick() {
    console.log('dies > ', dies);
  }
  rendern() {
    zurückkehren (
      <div beiKlick={this.handleClick.bind(this)}>Test</div>
    )
  }
}

Bei dieser Methode wird die Komponente bei jedem render neu bind , was sich auf die Leistung auswirkt.

Verwenden von Pfeilfunktionen in der Rendermethode

ES6 Kontext wird verwendet, um den Zeiger this an die aktuelle Komponente zu binden. Außerdem wird bei jedem render eine neue Methode generiert, was sich auf die Leistung auswirkt.

Klasse App erweitert React.Component {
  handleKlick() {
    console.log('dies > ', dies);
  }
  rendern() {
    zurückkehren (
      <div onClick={e => this.handleClick(e)}>Test</div>
    )
  }
}

Im Konstruktor binden

bind Sie die aktuelle Komponente im constructor vor, um wiederholtes Binden im render zu vermeiden

Klasse App erweitert React.Component {
  Konstruktor(Requisiten) {
    super(Requisiten);
    dies.handleClick = dies.handleClick.bind(dies);
  }
  handleKlick() {
    console.log('dies > ', dies);
  }
  rendern() {
    zurückkehren (
      <div beiKlick={this.handleClick}>Test</div>
    )
  }
}

Verwenden der Pfeilfunktionsbindung in der Definitionsphase

Wie bei der obigen Methode 3 kann wiederholtes Binden im render vermieden werden. Die Implementierung ist außerdem wie folgt sehr einfach:

Klasse App erweitert React.Component {
  Konstruktor(Requisiten) {
    super(Requisiten);
  }
  handleKlick = () => {
    console.log('dies > ', dies);
  }
  rendern() {
    zurückkehren (
      <div beiKlick={this.handleClick}>Test</div>
    )
  }
}

3. Unterschied

Die Unterschiede zwischen den oben genannten vier Methoden sind im Wesentlichen folgende:

  • Schreiben: Methode 1 und Methode 2 sind einfach zu schreiben, während Methode 3 zu kompliziert ist
  • Leistung: Methode 1 und Methode 2 generieren bei jedem Rendern der Komponente eine neue Methodeninstanz, was zu einer schlechten Leistung führt. Wenn diese Funktion als Eigenschaftswert an eine untergeordnete Komponente übergeben wird, führt dies zu zusätzlichem Rendering. Methode 3 und Methode 4 generieren nur eine Methodeninstanz

Basierend auf dem oben Gesagten ist Methode 4 die beste Ereignisbindungsmethode

Dies ist das Ende dieses Artikels über React Event Binding. Weitere relevante Inhalte zum Thema React Event Binding finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Die Implementierung der Ereignisbindung in React verweist auf drei Methoden
  • Detaillierte Erklärung von vier Möglichkeiten, dies an Ereignisse in React zu binden
  • Vergleich verschiedener Methoden der Ereignisbindung beim React-Lernen
  • Details zur Ereignisbindung reagieren

<<:  So installieren Sie Docker CE auf Ubuntu 18.04 (Community Edition)

>>:  MySQL InnoDB MRR-Optimierungshandbuch

Artikel empfehlen

So fügen Sie einen Link in HTML ein

Jede Webseite hat eine Adresse, die durch eine UR...

Detaillierte Erklärung des Grid-Layouts und des Flex-Layouts der Anzeige in CSS3

Das Gitterlayout weist einige Ähnlichkeiten mit d...

Methoden des adaptiven Webdesigns (gutes Zugriffserlebnis auf Mobiltelefonen)

1. Fügen Sie dem HTML-Header das Viewport-Tag hin...

Gängige Stile von CSS-Animationseffekten

Animation Definieren Sie eine Animation: /*Legen ...

JavaScript zum Erreichen aller oder umgekehrter Auswahlfunktionen

In diesem Artikel wird der spezifische JavaScript...

Verwenden Sie CSS, um ein Datei-Upload-Muster zu zeichnen

Wenn Sie es wären, wie würden Sie es erreichen, w...

js+css zur Realisierung eines dreistufigen Navigationsmenüs

In diesem Artikelbeispiel wird der spezifische Co...

So installieren Sie die IonCube-Erweiterung mit Pagoda

1. Installieren Sie zuerst die Pagode Installatio...

Zusammenfassung der Formulardesigntechniken im Webdesign

„Eingaben sollten in logische Gruppen unterteilt ...

CSS fügt Scroll zu Div hinzu und verbirgt die Bildlaufleiste

CSS fügt dem div Scrollen hinzu und verbirgt die ...

Detaillierte Erläuterung des Speichermodells der JVM-Serie

Inhaltsverzeichnis 1. Speichermodell und Laufzeit...

js generiert dynamisch Tabellen (Knotenoperationen)

In diesem Artikelbeispiel wird der spezifische Co...

So lösen Sie das Problem verschwommener kleiner Symbole auf Mobilgeräten

Vorwort Zuvor habe ich über das Problem der verti...

Anwendungsverschachtelung von HTML-ul-ungeordneten Tabellen

Anwendungsschachtelung ungeordneter Listen Code ko...