데브허브 | DEVHUB | The Best Use Case for the Context API in ReactThe Best Use Case for the Context API in React
- React Context API는 과거에는 주로 인증(Auth)이나 테마(Theme) 관리와 같이 자주 변하지 않는 전역 상태에 사용되었습니다. 🔑
- Context API의 핵심 특성은 Context 내부의 어떤 값이든 변경되면, 해당 Context를 사용하는 모든 컴포넌트가 해당 값을 직접 사용하지 않더라도 불필요하게 리렌더링된다는 점입니다. 🔄
- 이러한 리렌더링 특성 때문에 Context API는 자주 변경되는 데이터를 관리하는 전역 상태 관리 솔루션으로 부적합하며, 성능 저하를 초래할 수 있습니다. ⚠️
- 따라서 Context API는 애플리케이션 테마나 사용자 인증 상태처럼 변경 빈도가 낮은 데이터를 관리하는 데 가장 적합합니다. 💡
- 강연자는 메인 컴포넌트 파일 내에 여러 서브 컴포넌트를 함께 배치하는 방식을 선호하며, 이 서브 컴포넌트들이 React Query를 통해 동일한 데이터를 필요로 할 때 발생하는 문제점을 제시합니다. 🧩
- React Query는 캐시를 사용하더라도,
useQuery를 사용하는 컴포넌트의 첫 렌더링 시 데이터가 undefined로 처리되어 매번 undefined 체크와 추가 리렌더링이 필요하다는 개발 경험상의 불편함이 있습니다. ⏳
- 이 문제에 대한 한 가지 해결책은
useSuspenseQuery를 사용하는 것이지만, 이는 데이터가 외부에서 미리 페치될 것을 전제로 하므로, 컴포넌트 재사용 시 데이터가 없을 경우 빈 화면을 보여주는 등 디버깅이 어렵고 사용자 경험이 저하될 수 있습니다. 🚫
- 다른 해결책은 상위 컴포넌트에서 데이터를 페치한 후 하위 컴포넌트로 props를 통해 전달하는 방식(prop drilling)인데, 강연자는 이 방식이 단순하고 로컬 범위 내에서는 충분히 유효하다고 주장합니다. 🔗