2017-09-14 11 views
0

私はReactにはかなり新しく、リストを作成するための古典を構築しようとしています!しかし、私は配列項目を追跡するのに苦労しています。そう、Reactの配列に追加

 this.setState({items:this.state.items.concat(this.state.item)}); 

しかし、この方法では、毎回新しい配列を作成:

 this.setState({item: { 
     text: event.target.value, 
     index: this.state.items.length++, 
     completed:false 
     } 

そして、私はこのような項目の配列に追加されました:
次のように私は、アイテムを作成していますアイテムのインデックスは使用できません。しかし、プッシュを使って配列に追加しようとすると、表示できないようです!どんな助けでも大歓迎です!

+0

「プッシュ」を使用しているときにどのようなコードを使用していますか? OR - 各項目にidを付けることができますので、ポジションインデックスは必要ありませんか? –

+0

プッシュで元の配列が変更され、返されません – AHB

+1

「_Iアイテムのインデックスを使用できません」 –

答えて

1

私がここで疑うのは、タスクを追加するイベントが発行されたときに、itemの状態を設定しようとしていて、すぐにitemsの状態を設定している場合です。

は(5月バッチ複数SETSTATEを反応させるのは)パフォーマンスのために単一の更新を呼び出します。」

docsを参照してください。あなたがthis.setState({items:this.state.items.concat(this.state.item)});をしようとすると、itemは、最新のアイテムを持っていることを期待してはならないのでまた、あなたはすることができ、次の

const item = [{ 
    text: event.target.value, 
    index: this.state.items.length + 1, 
    completed:false 
}] 

let items = {this.state} 
items = items.push(item) 
this.setState({items}) 

を試してみることができます

関数をsetStateメソッドに渡します

this.setState(function(prevState, props) { 
    //Code goes here 
});