Reactフォーム(ES6構文)を実装し、各フィールドのonChangeイベントを状態の更新を担当するコントローラの親コンポーネントに渡す方法を学習しようとしています。これは、標準のhtml要素ではうまく動作しますが、日付フィールドにはあらかじめ缶詰めされたDatepicker(https://www.npmjs.com/package/react-bootstrap-date-picker)を試していますが、同じ方法で親にイベントを簡単に戻すことはできません。これに対処する簡単な方法はありますか?返信子コンポーネントの状態を更新するonChangeイベント
コントローラコンポーネント
class Parent extends React.Component {
constructor (props) {
super(props);
this.state = {job: ''}
}
setJobState(event) {
var field = event.target.name;
var value = event.target.value;
this.state.job[field] = value;
this.setState({job: this.state.job});
}
render() {
return <Child onChange={this.setJobState.bind(this)} />
}
}
子コンポーネント
class Child extends React.Component {
constructor (props) {
super(props);
}
render() {
<form>
<input type="text" name="jobNumber" onChange={this.props.onChange} />
<DatePicker name="dateCmmenced" onChange={this.props.onChange} />
</form>
}
}
が見えます'onChange'ハンドラを正しく束縛しますが、' DatePicker'の 'onChange'ハンドラは二つのパラメータで呼び出されます:' v alue'と 'formattedValue'(https://github.com/pushtell/react-bootstrap-date-picker#datepicker-を参照してください)。 'Child'コンポーネントでは、引数の違いを扱うことができる2つの' onChange'イベント用に異なるハンドラを設定するだけです。 – forrert
私はそれを試して、私はそれを働かせることができるかどうかを確認します。ありがとう。 –
状態を更新する方法にも注意してください。 'this.state.job [field] = value'はあなたの状態を更新する方法ではありません。 'this.setState'を呼び出すことによって常に状態を変更してください。 – forrert