1
私はコードから始めましょう:オブジェクトを状態オブジェクトの配列にプッシュします。 ReactJS
class App extends React.Component{
constructor() {
super();
this.state = {
todo: []
};
}
addTask(newTask) {
let todo = this.state.todo.slice();
newTask.id = this.nextId();
todo.push(newTask);
this.setState({todo}); //React method to update state object
}
//fake id
nextId() {
let id = 0;
this.nextId =() => {
return ++id;
};
return id;
}
render() {
return (
<div>
<ToDoList list={this.state.todo} />
<ModalDialog onFormSubmission={this.addTask.bind(this)}/>
<ActionButton />
</div>
);
}
}
;
は、今私はaddTask(newTask)
の各呼び出し後にすることを期待している - this.state.todo
配列は、ユニークなid
に別の要素が取り込まれます。だから、例えば:
addTask({title: "aa", description: "bb"});
addTask({title: "aa", description: "bb"});
は私を与える必要があります。
this.state.todo[0].id === 0
this.state.todo[1].id === 1
をしかし、私は同じ値ちょうど上記のように、これは真実であるとの二つのオブジェクトを置くとき:
this.state.todo[0].id === 1
this.state.todo[1].id === 1
私は理由を見ることができません。ユニークな値でオブジェクトをプッシュすると機能します。
Reactは 'setState'を使用し、状態オブジェクトを直接変更しないようにする必要があります。 – Tomasz
Reactでは動作しませんが、これはうまくいくようですhttps://jsfiddle.net/dLbjuLqw/ –
2番目の考えの後、反応して何かをしなければならないかもしれないと思っています... – Tomasz