Ich konnte nicht erkennen, was mit dem Code falsch ist. Ich übergebe Zustand über Requisiten, das NewItem ging durch, aber ich konnte den Zustand in Todos
Komponente nicht aktualisieren.Fehler beim Hinzufügen von Element und Update-Status ist react.js
class AddTodo extends React.Component {
constructor(){
super();
this.state = {text: ''};
}
onTextChanged(e){
this.setState({text:e.target.value});
}
addHandler(){
this.props.addTodo(this.state.text);
}
render() {
return(
<div>
<input type="text" onChange={(e)=>this.onTextChanged(e)} />
<button onClick={()=>this.addHandler()}>Add</button>
</div>
)
}
}
class Todos extends React.Component {
constructor(){
super();
this.state = {data: ['write book','wash clothes','jogging']};
}
addTodo(item){
const newData = [...this.state.data, item]; //problem is here
this.setState({ data: newData }); //problem is here
console.log(this.state.data)
}
render() {
return (
<div>
<AddTodo addTodo={(item)=>this.addTodo(item)}/>
<ul>
{this.state.data.map((item)=><TodoItems key={item} item={item}/>)}
</ul>
</div>
);
}
}
http://jsbin.com/nitibinale/1/edit?html,js,console,output
Wie binden Sie AddTodo-Funktionen an die Instanz? Ich sehe anonyme Funktionen, aber "das" ist der falsche Wert in ihnen. Alles in der Konsole? Welche Schritte haben Sie zum Debuggen unternommen? –
@DaveNewton warum muss ich binden? pfeilfunktion von es6 macht hier nicht die arbeit? –
@DaveNewton http://jsbin.com/pajoliboqi/1/edit funktioniert auch nicht, wenn ich es6 nicht verwende –