Ich versuche zu lernen, wie ein React-Formular (ES6-Syntax) implementieren und übergeben Sie die OnChange-Ereignisse für jedes Feld bis zu einer Controller-übergeordneten Komponente, die für die Aktualisierung des Status verantwortlich ist. Dies funktioniert gut für Standard-HTML-Elemente, jedoch versuche ich einen vordefinierten Datepicker (https://www.npmjs.com/package/react-bootstrap-date-picker) für ein Datumsfeld und kann das Ereignis nicht einfach auf die gleiche Weise an den Eltern übergeben. Gibt es eine einfache Möglichkeit, dies zu beheben?onChange-Ereignis für reagierende untergeordnete Komponente, Status zu aktualisieren
Controller Komponenten
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)} />
}
}
Kinder Komponente
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>
}
}
Sieht aus wie du bist Binden des 'onChange'-Handlers korrekt, aber der' onChange'-Handler für den 'DatePicker' wird mit zwei Parametern aufgerufen:' v alue' und 'formatValue' (siehe hier: https://github.com/pushtell/react-bootstrap-date-picker#datepicker-). Setzen Sie in Ihrer Child-Komponente einfach andere Handler für die beiden OnChange-Events, die mit den Argumenten umgehen können. – forrert
Ich werde es versuchen und sehen, ob ich es zur Arbeit bringen kann. Vielen Dank. –
Achten Sie auch darauf, wie Sie den Status aktualisieren. 'this.state.job [field] = value' ist nicht so, wie Sie Ihren Status aktualisieren sollten. Führen Sie immer Statusänderungen durch, indem Sie 'this.setState' aufrufen. – forrert