react
Welches ist die korrekte Syntax für einen Button-Klick-Event-Handler foo?
Übe dein Wissen
Erklärung
Verständnis der korrekten Syntax für Button-Klick-Events in React
Eine der häufigsten Aufgaben in der webbasierten Programmierung ist das Aufzeichnen von Benutzerinteraktionen, z.B. Klicks auf verschiedene UI-Elemente wie Schaltflächen. In React, einer beliebten JavaScript-Bibliothek für den Aufbau von Benutzerschnittstellen, gibt es spezielle Event-Handler-Syntaxen, um solche Benutzeraktionen zu behandeln.
Die Frage verlangt die korrekte Syntax für einen Button-Klick-Event-Handler namens foo. Bevor wir zur korrekten Antwort kommen, betrachten wir die gegebenen Optionen und erläutern, warum sie korrekt oder falsch sind.
<button onclick={this.foo()}>: Dies ist falsch, da React-Event-Handler in JSX Code in CamelCase geschrieben werden sollten, daher sollteonclickalsonClickgeschrieben werden.<button onclick={this.foo}>: Aus dem gleichen Grund wie oben ist dies auch falsch.<button onClick={this.foo()}>: Dies ist auch falsch. ObwohlonClickkorrekt in CamelCase geschrieben wurde, wird die Methodethis.foo()sofort beim Rendern der Komponente aufgerufen und nicht, wenn auf die Schaltfläche geklickt wird.<button onClick={this.foo}>: Dies ist die korrekte Antwort. Hier ist sowohlonClickkorrekt in CamelCase geschrieben als auch der EventHandlerthis.foowird nur ausgeführt, wenn ein Klick-Event ausgelöst wird.
Betrachten Sie zum Beispiel den folgenden Code, der einen Button in React darstellt und einen Klick-EventHandler foo hat:
class MyComponent extends React.Component {
foo() {
console.log('Button wurde geklickt!');
}
render() {
return (<button onClick={this.foo}>Klick mich!</button>);
}
}
Wenn die Schaltfläche "Klick mich!" geklickt wird, wird die Funktion foo ausgeführt und 'Button wurde geklickt!' wird in der Konsole protokolliert.
Wichtig zu beachten ist, dass in den meisten Fällen, insbesondere wenn Sie auf den Zustand der Komponente zugreifen möchten, Sie die Methode im Konstruktor an this binden müssen. Wenn Sie beispielsweise die Methode foo wie folgt ändern:
class MyComponent extends React.Component {
constructor(props) {
super(props);
this.foo = this.foo.bind(this);
}
foo() {
console.log('Button wurde geklickt!');
}
render() {
return (<button onClick={this.foo}>Klick mich!</button>);
}
}
Durch das Binden unserer Methode an this im Konstruktor können wir sicherstellen, dass this innerhalb unserer Methode foo auf unsere Komponenteninstanz zeigt.
Willst du mehr davon? Mach das komplette React Grundlagen-Quiz.
Quiz Starten