state, setState
state
// 예제로 카운드 증가
export default class CountComponent extends Component {
state = {
data: [
{ id: 0, count: 0 },
{ id: 1, count: 0 },
{ id: 2, count: 0 },
],
};
// as-is : 직접 수정 No
handleIncrement = (data) => {
data.count++;
this.setState(this.state);
};
// to-be
handleIncrement = (data) => {
// 새로운 배열을 만들고 Spread Syntax를 이용해서 this.state를 복사
const localNewArray = [...this.state.data];
// 인자로 전달된 data가 localNewArr에서 몇번째 인덱스 일까?
const index = localNewArray.indexOf(data);
// 로컬 배열 인덱스에 해당하는 카운트를 증가
localNewArray[index].count++;
// 새로운 상태 오브젝트를 넣어줌.
this.setState({data: localNewArray});
};
...
}Last updated