Skip to content

Latest commit

 

History

History
12 lines (9 loc) · 1.12 KB

불변성.md

File metadata and controls

12 lines (9 loc) · 1.12 KB

상태를 직접 변경하지 않고 굳이 setState()를 사용하는 이유가 무엇일까요?

  1. setState 는 배치 처리 되는데, 직접 상태를 변경 할 경우 배치처리에서 제외되어 렌더링 최적화를 할 수 없습니다.
  2. setState 는 비동기적으로 동작하므로, state 가 직접 수정될 경우, 이전 업데이트 내용이 다음 업데이트 내용에 덮어 씌워지는 등 예기치 못한 버그가 발생 할 수 있습니다.
  3. State 는 불변성을 유지해줘야 하는데, 직접 수정할 경우 주솟값이 바뀌지 않습니다.

불변성을 지켜야하는 이유는 무엇일까요?

  • 리액트 컴포넌트가 리렌더링 되는 조건은 props 혹은 state 가 변경 되거나 부모 컴포넌트가 리렌더링 된 경우 입니다.
  • 그렇다면 props,와 state 의 값이 바뀌었다는 것을 리액트는 어떻게 알 수 있을까요?
    • 각 상태의 주솟값을 비교하여 주솟값이 바뀐 경우 값이 바뀌었다고 판단합니다.
    • 왜 ? 객체의 모든 요소가 바뀌었는가에 대한 깊은 비교 비용 > 얕은 비교 비용