1. 상태 관리 개요

구분 설명
state 컴포넌트 내부에서 관리되는 지역 상태
props 부모 컴포넌트에서 자식 컴포넌트로 전달되는 데이터

2. Context API

개념 설명
Provider Context 값을 하위 컴포넌트에 전달
Consumer Context 값을 읽는 컴포넌트 (useContext)

3. Redux

주요 개념

개념 설명
slice createSlice()로 정의된 상태 조각. 상태, 리듀서 포함
state Redux Store에 저장되는 전역 상태 객체
action 상태 변경을 유발하는 객체. 주로 type과 payload 속성 포함
reducer 상태와 액션을 받아 새로운 상태를 반환하는 함수
dispatch 액션을 스토어에 전달해 상태를 변경하는 트리거 함수. useDispatch()로 사용
useSelector 스토어의 상태를 컴포넌트에서 조회할 때 사용하는 Ho

npm install @reduxjs/toolkit react-redux

main.jsx


import { StrictMode } from "react";
import { createRoot } from "react-dom/client";
import "./index.css";
import App from "./App.jsx";
import { Provider } from "react-redux";

import { CounterContextProvider } from "./contexts/CounterContext.jsx";
import { UserContextProvider } from "./contexts/UserContext.jsx";
import store from "./store.js";

createRoot(document.getElementById("root")).render(
  <StrictMode>
    {/* Context Provider로 감싸서 App 하위 모든 컴포넌트에 컨텍스트를 제공 */}
    <UserContextProvider>
      <CounterContextProvider>
        <Provider store={store}>
          <App />
        </Provider>
      </CounterContextProvider>
    </UserContextProvider>
  </StrictMode>
);