이 오류와 관련된 문제를 추적하는 데 어려움을 겪고 있습니다. 이는 변경 불가능한 개체를 업데이트하려고 함을 의미합니다. 이상하게도, 나는이 동작을 너무 혼란스럽게 만드는 이유 때문에 장애없이이 구현을 사용했습니다.오류 : 수정 불가능하고 고정 된 개체에 키를 설정하려고 시도했습니다.
다음은 사용중인 메서드입니다. 단순히 배열의 개체를 변경하고 속성을 변경하고 업데이트 된 상태를 반환합니다. here으로 표시된 것처럼 prevState
을 사용하면 불변성을 해결하는 최적의 방법 인 것으로 보입니다.
onCheck = (id) => {
this.setState((prevState) => {
prevState.options[id].checked = !prevState.options[id].checked;
return {
options: prevState.options,
dataSource: prevState.cloneWithRows(prevState.options)
};
});
}
는 또한 그러나 여전히 나에게 같은 불변성 오류를주고있다는 prevState 복사의 변화의 숫자를 시도했습니다.
prevState
을 복제하는 것이 아니라 여전히 참조하는 것처럼 보입니다. 귀하의 질문에
onCheck = (id) => {
this.setState((prevState) => {
let options = [...prevState.options];
options[id].checked = !options[id].checked;
return {
options: options,
dataSource: this.state.cloneWithRows(options)
};
});
}
당신은 당신의 함수에서'prevState'를 돌연변이시키고 있습니다. 당신은 할 수 없습니다. 'prevState.options'를 복제하고, * that *을 변경 한 다음, 새로운'options'로 설정해야합니다. –
이전에 해당 구현을 사용 했으므로 완벽하게 수용 가능합니다. 설명서에서 직접 참조하지 않아도됩니까? 달리 설명 할 수 없다면? – Kolors
설명서에서이 내용은 어떻게 참조됩니까? 이 문서는'prevState'에 접근 할 수있는 함수를'setState'에 넘겨주는 방법을 보여주고 있습니다. –