검색
회원가입로그인
React 기초부터 실전까지

12장: 상태 관리 – Context API와 Redux 기본

리액트 상태 관리의 시작: Context API와 Redux

리액트로 개발하다 보면 컴포넌트끼리 데이터를 주고받는 일이 자연스럽게 많아집니다. props로 부모에서 자식으로 값을 넘기는 것은 익숙하지만, 프로젝트 규모가 늘어날수록 데이터 흐름이 복잡해지고 여러 단계에 걸쳐 전달해야 할 때 불편함을 느끼게 됩니다. 이때 '상태 관리'의 필요성을 절감합니다.

Context API: Prop Drilling 없이 데이터 공유하기

Context API는 리액트에서 컴포넌트 트리 전체에 데이터를 직접 전달할 수 있게 해주는 기능입니다. 부모-자식, 속 깊은 컴포넌트까지도 별도의 props 전달 없이 원하는 값을 불러 쓸 수 있으니, 반복적인 값 전달, 즉 'props drilling' 문제를 효과적으로 해소할 수 있습니다.

예를 들어 다국어 지원, 테마 설정, 로그인 정보 등 여러 컴포넌트에서 반복적으로 참조하지만 자주 바꾸지 않는 데이터가 있다면 Context API가 딱 맞습니다.

Context를 만들고 Provider로 데이터를 공급하면, 하위 어디서든 useContext 훅으로 값에 접근할 수 있습니다. 단, 너무 자주 변하거나 대량의 상태를 context로 관리하면 모든 구독 컴포넌트가 함께 리렌더링되는 부작용이 있으니 신중히 선택하는 것이 좋습니다.

Redux: 더 큰 규모, 복잡한 상태를 위한 선택지

애플리케이션이 더욱 커지고 상태 관리가 폭넓어지면 Redux가 강력한 대안이 됩니다. Redux는 상태를 하나의 중앙 저장소(store)에 두고, 모든 컴포넌트가 이 store를 참조합니다. 액션(action)과 리듀서(reducer)를 통해 상태의 변화를 엄격하게 통제하기 때문에, 데이터 흐름이 명확해지고 협업이나 디버깅 시에도 큰 이점을 가집니다.

Redux를 도입하면 컴포넌트 트리의 어느 위치에서도 필요한 상태를 손쉽게 읽고 갱신할 수 있습니다. 하지만 작은 프로젝트나 단순한 상태 관리만 필요한 곳에는 오히려 무거울 수 있으니, 상황에 따라 도입 시점을 신중히 따져봐야 합니다.

현장에서는 어떻게?

일반적으로 사용자 인증 정보, 테마처럼 앱 전체에서 자주 쓰이는 값은 Context로; 로딩 상태, 사용자 목록처럼 여러 곳에서 읽고 수정하는 데이터가 많다면 Redux나 그 유사한 글로벌 상태 관리 도구를 선택합니다.

작게 시작해보고, 복잡도가 높아질 때 단계적으로 옮겨가는 유연한 접근이 현명합니다. 실전에서는 Context와 Redux, 그리고 기본 훅(useState, useReducer 등)을 조화롭게 활용해 자신의 프로젝트에 가장 맞는 패턴을 구축하게 됩니다.

앞으로는 Context API와 Redux의 실제 코드 적용 예제를 살펴보며, 각 방식의 구현과 차이점을 자세히 다룰 예정입니다.


공유하기
카카오로 공유하기
페이스북 공유하기
트위터로 공유하기
url 복사하기