본문 바로가기

카테고리 없음

React state is immutable

read-only state

  • 상태는 snapshot 이라 여기에 아무리 낙서해도 실제 피사체에는 영향을 주지 않음
  • 읽기 전용인 것처럼 다뤄줘요

mutation을 추천하지 않는 이유

  • 디버깅에 용이 (렌더 시 사용한 상태값을 보기 쉬움)
  • 최적화 (immutable 하다는걸 알면 상태 변경 감지하기에 편함)
  • 신기능은 state as a snapshot 원칙을 지킨다고 생각하고 낼거임
  • 객체 처리가 쉬움 (프록시같은걸로 감시할 필요가 없음)
  • snapshot 컨셉은 과거 상태들을 기억하기 쉬움

리액트는 Object.is를 사용해 이전 상태와 현 상태가 같은지 확인함

  • 객체 내부 mutation은 따라서 무효

이유

  • 상태 변화 감지를 위해서
  • 빠른 비교할 때 객체의 주소값을 비교하기 때문에 그 속 값을 바꾸는건 의미가 없음