공유 상태란
1. 공유 상태가 중요한 이유
- 공유되는 상태란 상태 중에서 단일 컴포넌트를 초과해서 공유되는 상태로, 흔히 ‘전역 상태’라고 부릅니다.
- 일반적으로 컴포넌트 트리 전역에 노출하는 방법을 사용하기 때문에 전역 상태라고 부르는 것 같지만, 실제로 ‘전역’일 필요는 없습니다. 예를 들어 React Context를 사용하면 일부 컴포넌트 트리에만 상태를 노출할 수 있습니다.
2. 공유 상태의 문제점
- 일부 구독자가 많고 상태 전이가 복잡한 전역 상태는 다음과 같은 ‘관리’가 필요할 수 있습니다.
- 성능 관리
- 상태 전이 경로 관리
2-1. 공유 상태의 문제점 1: 렌더링 성능
- 지역 상태에 비해 렌더링의 효율성이 더 중요해집니다.
- 전역 상태는 지역 상태와 비교했을 때 상태를 구독하고 있는 컴포넌트 개수가 더 많고,
- 상태 갱신 시 리-렌더링하는 화면의 범위와 재-실행하는 로직의 양이 지역 상태에 비해 많기 때문입니다.
- 전역 상태로 관리할 정도라면 별도의 렌더링 최적화가 필요할 수 있습니다.
2-2. 공유 상태의 문제점 2: 상태 전이 경로의 복잡성
- 지역 상태에 비해 상태 변경의 예측 가능성이 더 중요해집니다.
- 각 컴포넌트가 새로운 상태에 반응하기 때문에, 연쇄적인 상태 변경이 생길 수 있습니다.
- 연쇄적인 상태 변경은 흐름을 이해하기 어려울 수 있습니다.
- 상태 전이를 간소화할 수 없을 때는 상태 전이를 쉽게 파악할 수 있으면 좋습니다. 예를 들면,
- 상태가 언제, 어디서, 왜, 어떻게 바뀌었는지 파악할 수 있어야 합니다.
- 위 과정을 기록하고 재현할 수 있어야 합니다.