Ich bin gerade dabei, Wit React. Ich versuche ein Formular mit mehreren Eingabefeldern zu erstellen. Diese Felder haben einen Standardwert, wenn die Komponente geladen wird. Der Wert ist editierbar.Mehrere Eingänge mit mehreren Statuswerten in React
Ich erstelle die Felder durch Iterieren über die Daten. Ich habe Schwierigkeiten, den Status zu setzen, sobald das Feld bearbeitet wurde. Hier ist, was ich bisher geschafft habe.
var Form = React.createClass({
loadStuff:function(){
console.log(this.props.products);
this.setState({data: this.props.products});
},
onChange: function(opt){
this.setState({data: this.state.data})
},
getInitialState: function(){
return {data: []};
},
componentDidMount: function(){
this.loadStuff();
},
render: function(){
return(
<div>
<InputList data={this.state.data} onChange={this.onChange}/>
</div>
)
}
});
var InputList = React.createClass({
handleChange: function(e){
console.log(' ', e.target.value);
this.setState({value: e.target.value})
},
render:function(){
var boxes = this.props.data.map(function(d){
return(
<input value={d.num} onChange={this.handleChange}/>
)
}.bind(this));
return(
<div>{boxes}</div>
)
}
})
var PRODUCTS = [
{num: 1, name: 'Football'},
{num: 2, name: 'Baseball'},
{num: 3, name: 'Basketball'},
{num: 4, name: 'iPod Touch'},
{num: 5, name: 'iPhone 5'},
{num: 6, name: 'Nexus 7'}
];
ReactDOM.render(<Form products={PRODUCTS}/>,
document.getElementById('content'))
Vielen Dank im Voraus für jede Hilfe.
EDIT - UPDATE
var InputList = React.createClass({
componentWillReceiveProps: function(nextProp){
nextProp.data.map(function(props){
console.log('+++++++', props.num);
this.setState({
value: props.num
})
}.bind(this))
},
handleChange: function(e){
//console.log(' ', e.target.value);
this.setState({value: e.target.value})
},
render:function(){
var boxes = this.props.data.map(function(d){
//console.log(d)
return(
<input value={this.state.value} onChange={this.handleChange}/>
)
}.bind(this));
return(
<div>{boxes}</div>
)
}
})
'zu halten this.props.data' immer auf die Requisiten beziehen Sie gehen rein, niemals in Ihren aktualisierten Status. Sie benötigen 'this.state.data' und leiten den Anfangszustand von den Requisiten ab. Siehe https://facebook.github.io/react/docs/component-specs.html#getinitialstate und https://facebook.github.io/react/docs/component-specs.html#updating-componentwillreceiveprops. –
danke, dass Sie mich in die richtige Richtung @Felix zeigen. Ich habe den Code geändert, um 'componentWillReceiveProps' zu verwenden. Es verwendet nur den letzten Wert für alle Eingaben. Muss noch etwas weiter nachforschen. – Fred