Ich lerne React. In einer Test-App, die ich schreibe, rende ich einige Buttons mit onClick-Methoden. Wenn sie so gerendert werden, funktionieren sie und rufen die selectMode-Funktion wie erwartet auf, wenn sie geklickt werden.Binden von Ereignishandlern in React Components feuert onClick wenn gerendert wird
constructor(props) {
super(props);
this.state = { mode: 'commits', commits: [], forks: [], pulls: [] };
}
...
selectMode(mode) {
this.setState({ mode });
}
render() {
...
return (<div>
<button onClick={this.selectMode.bind(this, 'commits')}>Show Commits</button><br/>
<button onClick={this.selectMode.bind(this, 'forks')}>Show Forks</button><br/>
<button onClick={this.selectMode.bind(this, 'pulls')}>Show Pulls</button>
</div>
)
}
Aber wenn ich die vorgeschlagenen Best Practices versucht Art und Weise unten, indem sie in den Konstruktor zu binden, wird die Funktion select dreimal aufgerufen, wenn die Komponente wiedergegeben wird. Warum werden die onClick-Ereignishandler dann aufgerufen? Was habe ich falsch?
Mit einem Attribut des Elements können Sie diese Parameter problemlos übergeben. Ich bin zu neu, um darüber nachgedacht zu haben, und kein Beispiel, dass ich übergangene Parameter gesehen habe. – MartinDuo