read-only state
- 상태는 snapshot 이라 여기에 아무리 낙서해도 실제 피사체에는 영향을 주지 않음
- 읽기 전용인 것처럼 다뤄줘요
mutation을 추천하지 않는 이유
- 디버깅에 용이 (렌더 시 사용한 상태값을 보기 쉬움)
- 최적화 (immutable 하다는걸 알면 상태 변경 감지하기에 편함)
- 신기능은 state as a snapshot 원칙을 지킨다고 생각하고 낼거임
- 객체 처리가 쉬움 (프록시같은걸로 감시할 필요가 없음)
- snapshot 컨셉은 과거 상태들을 기억하기 쉬움
리액트는 Object.is를 사용해 이전 상태와 현 상태가 같은지 확인함
- 객체 내부 mutation은 따라서 무효
이유
- 상태 변화 감지를 위해서
- 빠른 비교할 때 객체의 주소값을 비교하기 때문에 그 속 값을 바꾸는건 의미가 없음