는 내가 직접 반작용의 상태를 변이 안 알아,하지만 어떻게 상황에 대해 내가 기능을 사용할 때 :이 통과 객체를 수정하는 실수setState 함수에 전달 된 상태를 mutate 할 수 있습니까?
onSocialClick = e => {
const id = e.target.value;
this.setState((prevState, props) => {
prevState[id] = !(prevState[id]);
return prevState;
});
};
인가를?
편집 :
그것은 우리의 대부분은 잘못 여기있는 것으로 나타났다. 반응 : docs state it clearly now :
prevState는 이전 상태를 나타냅니다. 그것은 직접 변이해서는 안됩니다. 대신 prevState 및 props의 입력을 기반으로 새 객체를 작성하여 변경 사항을 표현해야합니다.
@ Tomáš Hübelbauer에게 감사의 말씀을 전합니다.
을 것 prevState 인수와 함께 그러나 setState를 당신이 prevState의 값에 따라 상태를 수정할 때 사용되며 그것은 prefectly 시나리오 및 처리 할 수있는 더 깨끗한 방법을 맞는 상태를 직접 수정한다는 것은'this.state = ...'가 아니라'setState'를 사용해야한다는 것을 의미합니다. 만약 당신이 - 당신이 들어오는 매개 변수로 사용하는 모든 것은 괜찮습니다. – elmeister
@ Tomasz 코드 스 니펫에 대한 의문이 생겼기 때문에 후속 질문을했습니다. 이 흥미로운 것을 발견 할 수 있습니다 : https://stackoverflow.com/q/47339643/2715716 –
@ TomášHübelbauer 감사합니다! 나는 편집을했다. – Tomasz