Writing Subject :
리액트의 단방향 프롭스 전달 방식을 개선하기 위해 나온 기능.
애플리케이션의 상태를 전역적인 단일 저장소(store)에서 관리, 상태는 액션(action)을 통해 업데이트되고 리듀서(reducer)를 통해 새로운 상태로 반환.
리액트 Context는 상태 관리 도구가 아니다
chatGPT's summary
이 글은 "Context vs Redux"에 관한 토론을 다루며, React Context API와 Redux의 목적과 사용 사례를 명확히 설명하려는 목적으로 작성되었습니다. 많은 혼란이 이 두 도구의 기능과 사용 목적을 이해하지 못함에서 비롯된다고 언급하며, 이 글은 그러한 혼란을 해소하고자 합니다.
요약 및 핵심 포인트
-Context와 Redux는 다른 것이다.
Context는 의존성 주입을 위한 수단이며, 상태 자체를 "관리"하지 않는다. 반면 Redux는 애플리케이션 상태를 관리하고 업데이트하는 데 사용되는 도구이다.
-Context는 "상태 관리" 도구가 아니다.
Context는 데이터를 컴포넌트 트리를 통해 전달하는 메커니즘을 제공하지만, 상태 관리를 직접 하지는 않는다. useState 또는 useReducer와 같은 React의 다른 기능이 실제 상태 관리를 담당한다.
-Context와 useReducer는 Redux를 대체하지 않는다.
비슷한 기능을 가지고 있을 수 있으나, Redux는 애플리케이션의 상태 변화를 이해하고 시각화할 수 있는 강력한 도구와 미들웨어를 제공한다.
Context 사용 시기: 특정 값(예: 로케일 설정, UI 테마 등)을 컴포넌트 트리의 일부에 접근 가능하게 하고 싶을 때 사용한다.
-useReducer와 Context 사용 시기: 애플리케이션의 특정 부분에서 상태 관리가 필요할 때 사용한다.
-Redux 사용 시기: 애플리케이션 상태가 많고 복잡하며, 상태 업데이트 로직이 복잡할 때, 또는 상태 변화를 시간에 걸쳐 이해하고 시각화하고 싶을 때 사용한다.
-결론 및 권장 사항
적절한 도구 선택: 상태 관리에 대한 당신의 요구사항에 가장 잘 맞는 도구를 선택해야 한다. 만약 단순히 prop-drilling을 피하고 싶다면 Context를, 더 복잡한 상태 관리가 필요하다면 Redux를 고려해야 한다.
Redux Toolkit: Redux를 사용하는 경우 Redux Toolkit을 사용하면 "보일러플레이트" 코드를 상당히 줄일 수 있다.
Context와 Redux의 병행 사용: 이 두 도구는 서로 배타적이지 않으며, 애플리케이션 내에서 동시에 사용될 수 있다. 전역 상태는 Redux에, 로컬 상태는 React 컴포넌트에 두는 것을 고려할 수 있다.
이 글은 Context와 Redux에 대한 오해를 해소하고, 각 도구가 어떻게 다른지, 어떤 상황에서 사용해야 하는지에 대한 명확한 이해를 제공하고자 합니다.