Heim > Web-Frontend > js-Tutorial > Hauptteil

Warum und wann sollten wir Funktionen und Event-Handler in React binden?

Susan Sarandon
Freigeben: 2024-10-27 02:35:30
Original
719 Leute haben es durchsucht

 Why and When Should We Bind Functions and Event Handlers in React?

Warum und wann sollten wir Funktionen und Event-Handler in React binden?

In React ist der Kontext von Klassenmethoden nicht standardmäßig gebunden. Beim Zugriff auf den Zustand oder die Requisiten der Komponente innerhalb dieser Methoden ist es notwendig, deren Kontext zu binden.

Funktionsbindungsoptionen

Es gibt mehrere Möglichkeiten, Funktionen zu binden:

1. Konstruktorbindung:

class SomeClass extends Component {
  constructor() {
    super();
    this.someEventHandler = this.someEventHandler.bind(this);
  }

  someEventHandler(event) {}
}
Nach dem Login kopieren

2. Fat Arrow-Funktionen:

class SomeClass extends Component {
  someEventHandler = (event) => {
  };
}
Nach dem Login kopieren

3. Inline-Lambda-Funktionsbindung:

onChange={(event) => this.someEventHandler(event)}
Nach dem Login kopieren
Nach dem Login kopieren

4. .bind() Methodenbindung:

onChange={this.someEventHandler.bind(this)}
Nach dem Login kopieren
Nach dem Login kopieren

Event-Handler-Bindungsoptionen

1. Inline-Lambda-Funktionsbindung:

onChange={(event) => this.someEventHandler(event)}
Nach dem Login kopieren
Nach dem Login kopieren

2. .bind() Methodenbindung:

onChange={this.someEventHandler.bind(this)}
Nach dem Login kopieren
Nach dem Login kopieren

Auswahl der Bindungsmethode

Die geeignete Bindungsmethode hängt von der Struktur der Komponente und der erforderlichen Funktionalität ab:

Vorbindung (Konstruktorbindung oder Fat Arrow-Funktionen):

  • Verwenden Sie diese Funktion, wenn die Funktion Zugriff auf den Status oder die Requisiten der Komponente benötigt.

Laufzeitbindung (Inline-Lambda-Funktionsbindung oder .bind()-Methode):

  • Verwenden Sie, wenn die Funktion nicht auf den Status oder die Requisiten der Komponente zugreift.
  • Ermöglicht die Eingabe zusätzlicher Parameter an den Handler übergeben werden.

Übergabe zusätzlicher Parameter:

  • Für die Vorbindung übergeben Sie Parameter als Funktionsargumente im Konstruktor oder verwenden Sie fat Pfeilfunktionen mit zusätzlichen Parametern.
  • Verwenden Sie für die Laufzeitbindung Inline-Lambda-Funktionen oder .bind() mit zusätzlichen Parametern.

Beispielverwendung

Im bereitgestellten Code Snippet:

render() {
  return <input onChange={this.someEventHandler.bind(this)} />;
}
Nach dem Login kopieren

Dies ist eine Laufzeitbindung mit der .bind()-Methode, die den Kontext von someEventHandler an die Komponenteninstanz bindet.

render() {
  return ;
}
Nach dem Login kopieren

Dies ist eine Laufzeitbindung mit eine Inline-Lambda-Funktion, die auch den Kontext von someEventHandler an die Komponenteninstanz bindet.

render() {
  return <input onChange={this.someEventHandler} />;
}
Nach dem Login kopieren

Dies ist eine Laufzeitbindung ohne zusätzliche Parameter. Es wird jedoch empfohlen, die someEventHandler-Funktion im Konstruktor vorab zu binden oder eine Fat-Pfeil-Funktion zu verwenden, um sicherzustellen, dass der richtige Kontext beibehalten wird.

Das obige ist der detaillierte Inhalt vonWarum und wann sollten wir Funktionen und Event-Handler in React binden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!