子コンポーネントからトップレベルの状態を更新する必要があります。子コンポーネントには、この目的のための複数の選択リストがあります。リアクタの複数の入力要素に対するシングルハンドラ
私の子コンポーネントでは:私の親で
constructor(props) {
this.updateNoOfSets = this.updateNoOfSets.bind(this);
this.updateNoOfRounds = this.updateNoOfRounds.bind(this);
}
updateNoOfSets() {
this.props.updateNoOfSets(parseInt(this.updatedNoOfSets.value));
}
updateNoOfRounds() {
this.props.updateNoOfRounds(parseInt(this.updatedNoOfRounds.value));
}
<select
value={this.props.noOfSets}
onChange={this.updateNoOfSets}
ref={(input) => {
this.updatedNoOfSets = input;
}}
>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<select
value={this.props.noOfRounds}
onChange={this.updateNoOfRounds}
ref={(input) => {
this.updatedNoOfRounds = input;
}}
>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
:
constructor(props) {
super(props);
this.updateNoOfSets = this.updateNoOfSets.bind(this);
this.updateNoOfRounds = this.updateNoOfRounds.bind(this);
}
updateNoOfSets(noOfSets) {
this.setState({'noOfSets': noOfSets});
}
updateNoOfRounds(noOfRounds) {
this.setState({'noOfRounds': noOfRounds});
}
これは作業が、私には非常に冗長思われます。これを書くためのより短い方法がありますか?私のコード例は2つの選択リストしか持っていませんが、私の実際のアプリケーションはもっと運賃があります。
親の状態を子に変更する親の関数を小道具として渡すだけです。子コンポーネントでは、このメソッドを取得してselectメソッドでトリガーすることができます。 – cdaiga
これは私がupdateNoOfSetsでやっていることではありませんか? – Evans
これは、バインディングに問題がある可能性があることを意味します。 – cdaiga