내 구성 요소의 상태를 변경하려면 usign setState입니다.덮어 쓰기 상태가 아닌 반응
상태에서 요소를 삭제해야 할 때까지 제대로 작동합니다.
이의 내가 내 가게에있는 척하자 : 나는 다른 요소를 추가 할 경우
{
0: {name: foo},
1: {name: bar}
}
, 그것은 잘 작동 : 위의 코드와
store[2] = {name: hohoho};
setState(store, console.log(this.state));
, 내가 예상되는 상태와 끝까지 :
{
0: {name: foo},
1: {name: bar},
2: {name: hohoho},
}
그러나 저장소에서 요소 중 하나를 삭제하고 상태를 다시 변경하면 삭제되지 않습니다.
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},
}
그러나 이상한 점은 다른 요소를 상점에 추가하고 상태를 설정 한 경우입니다.
store[3] = {name: heyheyhey};
setState(store, console.log(this.state));
나는 다음과 같은 상태로 끝날 :
은을 console.log (저장소) 다음 날을 제공하더라도{
0: {name: foo},
1: {name: bar},
2: {name: hohoho},
3: {name: heyheyhey}
}
:
{
0: {name: foo},
1: {name: bar},
3: {name: heyheyhey}
}
누군가가 날 것 뭐죠 이해하는 데 도움 주실 래요 에? 일부 의견은 문제가 될 수 삭제 말했다 때문에
편집
, 난 내 저장소에서 삭제하고있어 방식 변경 :
var temp = {};
for (var x in store) {
if (x != id) {
temp[x] = store[x];
}
}
store= temp;
을하지만 난 여전히 같은 문제가 발생하고있다.
항상 상태 개체를 변경하는 대신 새 개체를 생성하십시오. –
새 개체를 만드는 것은 무엇을 의미합니까? 당신은 정교 할 수 있습니까? –
그것은'delete'가 생각한 것처럼 메모리를 비우지 않기 때문입니다. –