[React] state를 직접 수정하면 안되는 이유
- setState()는 비동기함수이기 때문에 여러번 state를 직접수정하여 업데이트할경우 이전값이 반영되기전에 새로운값이 덮어씌워질수 있다. this.setState((curr)=>return({count:curr.count+1})) 이런식으로 setState안에는 콜백함수가 들어가야한다. 직접 state를 변경하는 것이 더 직관적이지만(에러는 안남) 이전state값을 사용할 수 없는 경우가 있다.(비동기적처리의 경우)
- PureComponent는 shallow comparison 즉, ref값으로 비교하기 때문에 state를 직접 변경하여 동일한 오브젝트를 새로운 state로 전달할 경우 render()를 호출하지 않는다. 즉, 업데이트가 안된다.