私は自分のコンポーネントの状態を変更するためにsetStateを使用しています。状態が上書きされないようにしてください
状態から要素を削除する必要があるまでは正常に動作します。
はのは、私は私の店でこれを持っているふりをしてみましょう:
{
0: {name: foo},
1: {name: bar}
}
私は別の要素を追加した場合、それだけで正常に動作します:
store[2] = {name: hohoho};
setState(store, console.log(this.state));
上記のコードでは、私が期待される状態になってしまいます:
ただし、ストアから要素の1つを削除して状態を再度変更しても、削除されません
delete store[2]
私は(ストア)にconsole.log場合は、私が手に:その後、
{
0: {name: foo},
1: {name: bar}
}
:状態から
setState(store, console.log(this.state))
は私を与える:
{
0: {name: foo},
1: {name: bar},
2: {name: hohoho},
}
しかし、それよりも見知らぬ人は、別の要素をストアに追加して、状態を設定した後です:
{
0: {name: foo},
1: {name: bar},
2: {name: hohoho},
3: {name: heyheyhey}
}
はconsole.log(店舗)は私に次のことを与えている場合でも:
{
0: {name: foo},
1: {name: bar},
3: {name: heyheyhey}
}
誰かが起こっていただきました!私が理解する助けてくださいすることができ、私は次のような状態で終わる
store[3] = {name: heyheyhey};
setState(store, console.log(this.state));
に?
EDIT
いくつかのコメントを削除したので問題かもしれないが、私は私が私の店から削除しています方法変更:
var temp = {};
for (var x in store) {
if (x != id) {
temp[x] = store[x];
}
}
store= temp;
をしかし、私はまだ同じ問題を経験しています。
毎回状態オブジェクトを変更する代わりに新しいオブジェクトを生成するたびに –
新しいオブジェクトを作成することはどういう意味ですか?あなたは精緻化できますか? –
それは、あなたが思うように、 'delete'はメモリを解放しないからです。 –