コードに何が間違っているか分かりませんでした。私は小道具を経由して状態を渡しますが、newItemは通り過ぎましたが、Todos
の状態で状態を更新できませんでした。アイテムを追加できませんでした。状態を更新しました。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
インスタンスに 'AddTodo'関数をバインドしていますか?私は匿名の関数を見ていますが、 'this'は間違った値になります。コンソールには何もありませんか?あなたはどのようなステップをデバッグしましたか? –
@DaveNewtonなぜ私はバインドする必要がありますか? es6の矢の機能はここで仕事をしないのですか? –
@DaveNewton http://jsbin.com/pajoliboqi/1/editは私もes6を使わないと動作しません –