반응형
    
    
    
  

React의 상태 관리는 프로젝트 규모와 요구사항에 따라 달라집니다.
단순히 useState로 충분한 경우도 있지만, 전역 상태 관리가 필요해지면 선택지가 다양해집니다.
이번 포스팅에서는 대표적인 세 가지 접근법을 살펴봅니다.
🧩 1. Context API
React 기본 제공 전역 상태 관리 도구
✅ 특징
- React에 내장 → 별도 라이브러리 설치 불필요
 - createContext + useContext 사용
 - 전역 상태를 Provider로 감싸서 하위 컴포넌트에서 접근 가능
 
📌 예시
const ThemeContext = React.createContext();
function App() {
  return (
    <ThemeContext.Provider value="dark">
      <Toolbar />
    </ThemeContext.Provider>
  );
}
function Toolbar() {
  const theme = React.useContext(ThemeContext);
  return <div>현재 테마: {theme}</div>;
}
⚠️ 단점
- 상태가 커질수록 리렌더링 최적화 어려움
 - 복잡한 상태 관리에는 부적합
 
🏛️ 2. Redux
상태 관리의 표준처럼 자리잡은 라이브러리
✅ 특징
- 단일 스토어(Store)에서 상태를 관리
 - 예측 가능한 상태 전이 (Reducer, Action 기반)
 - 미들웨어(Redux Thunk, Saga)로 비동기 처리 확장 가능
 
📌 예시
// reducer.js
function counterReducer(state = { count: 0 }, action) {
  switch (action.type) {
    case "INCREMENT": return { count: state.count + 1 };
    default: return state;
  }
}
// 사용
const count = useSelector(state => state.count);
const dispatch = useDispatch();
dispatch({ type: "INCREMENT" });
⚠️ 단점
- 보일러플레이트 코드 많음 (Redux Toolkit으로 개선됨)
 - 작은 프로젝트엔 과할 수 있음
 
🪴 3. Zustand
최근 각광받는 가볍고 직관적인 상태 관리 라이브러리
✅ 특징
- Redux보다 훨씬 간결
 - 불필요한 리렌더링 최소화
 - 미들웨어 확장 가능 (persist, devtools 등)
 
📌 예시
import create from "zustand";
const useStore = create(set => ({
  count: 0,
  increment: () => set(state => ({ count: state.count + 1 }))
}));
// 사용
function Counter() {
  const { count, increment } = useStore();
  return <button onClick={increment}>Count: {count}</button>;
}
⚠️ 단점
- Redux만큼의 생태계/레퍼런스는 부족
 - 대규모 팀에서는 표준성이 약할 수 있음
 
⚖️ 4. 비교표
| 구분 | Context API | Redux | Zustand | 
| 설치 필요 | ❌ | ✅ | ✅ | 
| 복잡성 | 낮음 | 높음 | 중간 | 
| 리렌더링 최적화 | 어려움 | 가능 | 매우 효율적 | 
| 학습 난이도 | 쉬움 | 중간~어려움 | 쉬움 | 
| 적합 프로젝트 | 소규모 | 대규모, 팀 협업 | 중~대규모, 빠른 개발 | 
🎯 5. 실무 적용 가이드
- 🟢 소규모 / 간단한 전역 상태 → Context API
 - 🔵 대규모 / 팀 협업 / 복잡한 비동기 로직 → Redux (Toolkit 권장)
 - 🟢 빠른 개발 / 중규모 / 직관적 상태 관리 → Zustand
 
👉 최근 트렌드는 Redux Toolkit + Zustand 혼합 사용도 많습니다.
📝 마무리 정리
- Context API: 간단하고 내장 기능, 하지만 성능 최적화 한계
 - Redux: 대규모 프로젝트의 안정적인 선택, 다만 코드 복잡
 - Zustand: 가볍고 직관적, 요즘 각광받는 차세대 선택지
 
상태 관리 = 팀 구성 + 프로젝트 규모 + 요구사항에 따라 고르는 것이 핵심입니다.
반응형
    
    
    
  'React, Vue' 카테고리의 다른 글
| React Router ✅ SPA에서 페이지 전환 구현하는 방법 (0) | 2025.10.27 | 
|---|---|
| React 컴포넌트 최적화 ✅ React.memo, useMemo, useCallback (0) | 2025.10.22 | 
| React 초보 탈출! useState, useEffect로 컴포넌트 상태와 생명주기 완벽하게 다루기 (0) | 2025.10.07 | 
| useDeferredValue – 입력 딜레이 줄이고 UX 개선하기 (0) | 2025.09.15 | 
| Suspense 제대로 쓰기 – 데이터 로딩 UX와 코드 스플리팅 동시 개선 (0) | 2025.09.10 |