본문 바로가기

React

Immutable이란?

반응형

리액트에서는 setState() 함수를 통해서만 state를 update 하는데, 이때 기존의 상태(객체)의 값을 직접 수정하면 안 된다.

즉, 리액트에서 state는 생성된 이후에 다시는 그 상태를 변경할 수 없다.

 

그 이유는 setState나 hook의 setter함수를 통해 상태를 변경하지 않으면 리액트는 상태의 변경을 감지하지 못해서 리렌더링을 하지 않기 때문이다.

 

이때 리액트에서는 상태를 immutable 하게 관리하라고 한다. 

🤔 리액트의 상태가 immutable 하면 어떤 점이 좋을까요?

  • 의도치 않게 특정 객체가 변경되면, 해당 객체를 참조하던 객체의 값이 같이 변경되는 side effect를 낮출 수 있다. 이에 따라 디버깅이 쉬워지고 프로그램 복잡도가 낮아진다.
  • prevState와 nextState를 하나하나 비교하지 않고, 해당 상태의 referrence만 비교하면 된다.
  • 결론적으로 코드의 유지보수가 쉬워진다.
  • state가 immutable하지 않다면, 리액트는 이전 V-DOM과 현재 V-DOM을 하나하나 비교하면서 state의 변경사항을 찾아야 한다. 하지만, 리액트에서 상태를 immutable 하게 관리하는 게 보장되면, 단순히 참조하고 있는 현재 객체가 이전 객체와 다른지를 비교하며 바로 변경사항을 확인할 수 있다.
반응형

'React' 카테고리의 다른 글

Redux  (0) 2021.06.23
State vs Props  (0) 2021.06.22
제어 컴포넌트 vs 비제어 컴포넌트  (0) 2021.06.19
Key  (0) 2021.06.16
Virtual DOM  (0) 2021.06.15