반응형
리액트에서는 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 |