私はReactを学習しています。私が書いているテストアプリでは、onClickメソッドでいくつかのボタンをレンダリングしています。このようにレンダリングされると、クリックされたときにselectMode関数が正常に動作し、呼び出されます。Reactコンポーネントのイベントハンドラをバインドすると、レンダリング時にonClickが発生する
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>
)
}
しかし、私は道コンストラクタで結合することによって、以下に示す提案のベストプラクティスをしようとしたときにコンポーネントがレンダリングされるときに、のselectMode機能は3回呼び出されます。なぜonClickイベントハンドラが呼び出されているのですか?何が間違っていますか?
constructor(props) {
super(props);
this.state = { mode: 'commits', commits: [], forks: [], pulls: [] };
this.selectMode = this.selectMode.bind(this)
}
...
selectMode(mode) {
this.setState({ mode });
}
render() {
...
return (<div>
<button onClick={this.selectMode('commits')}>Show Commits</button><br/>
<button onClick={this.selectMode('forks')}>Show Forks</button><br/>
<button onClick={this.selectMode('pulls')}>Show Pulls</button>
</div>
)
}
要素の属性を使用すると、これらのパラメータを渡すことができます。私はそれを考えて新しくなりました、そして、通過パラメータをカバーした例はありませんでした。 – MartinDuo