Heim >Web-Frontend >js-Tutorial >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.
Es gibt mehrere Möglichkeiten, Funktionen zu binden:
1. Konstruktorbindung:
class SomeClass extends Component { constructor() { super(); this.someEventHandler = this.someEventHandler.bind(this); } someEventHandler(event) {} }
2. Fat Arrow-Funktionen:
class SomeClass extends Component { someEventHandler = (event) => { }; }
3. Inline-Lambda-Funktionsbindung:
onChange={(event) => this.someEventHandler(event)}
4. .bind() Methodenbindung:
onChange={this.someEventHandler.bind(this)}
1. Inline-Lambda-Funktionsbindung:
onChange={(event) => this.someEventHandler(event)}
2. .bind() Methodenbindung:
onChange={this.someEventHandler.bind(this)}
Die geeignete Bindungsmethode hängt von der Struktur der Komponente und der erforderlichen Funktionalität ab:
Vorbindung (Konstruktorbindung oder Fat Arrow-Funktionen):
Laufzeitbindung (Inline-Lambda-Funktionsbindung oder .bind()-Methode):
Übergabe zusätzlicher Parameter:
Im bereitgestellten Code Snippet:
render() { return <input onChange={this.someEventHandler.bind(this)} />; }
Dies ist eine Laufzeitbindung mit der .bind()-Methode, die den Kontext von someEventHandler an die Komponenteninstanz bindet.
render() { return ; }
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} />; }
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!