Redux

상태 관리

Lulung 2024. 12. 23. 12:13

상태 관리는 앱에서 데이터(상태)를 효율적으로 관리하고, 그 데이터가 변경될 때 UI를 자동으로 업데이트하도록 돕는 시스템이다. 상태 관리는 작은 앱부터 큰 프로젝트까지 꼭 필요한 개념이다. 상태의 예시에는 로그인 상태, 유저 정보, UI 상태, 페이지 이동 조건 등이 있다.

 

상태 관리의 필요성

1. 데이터 흐름 관리 : 여러 컴포넌트가 동일한 데이터를 공유해야 할 때, 그 데이터를 한 곳에서 관리하면 편리해진다. 예를 들어, 유저가 로그인하면, 헤더, 프로필 페이지, 대시보드 등 여러 컴포넌트가 유저 정보를 공유해야 한다.

2. 상태 변경에 따른 UI 업데이트 : 상태가 바뀌면, 자동으로 화면에 반영된다. 예를 들어, 장바구니에 상품 추가 시 바로 수량과 가격 표시가 갱신되어야 한다.

 

상태 관리 방식

1. Local State : 각 컴포넌트 내부에서만 관리하는 상태. useState (React 기본 기능) 사용.

예시

import React, { useState } from "react";

const Counter = () => {
  const [count, setCount] = useState(0); // 로컬 상태
  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => setCount(count + 1)}>Increase</button>
    </div>
  );
};

 

2. Global State : 여러 컴포넌트가 공유하는 데이터. 전역으로 상태를 관리하면 복잡한 데이터 흐름이 깔끔해진다. React Context API 또는 Redux와 같은 외부 상태 관리 라이브러리 사용.

예시

// Counter.js
import React from "react";
import { useSelector, useDispatch } from "react-redux";
import { increment, decrement, incrementByAmount } from "./store";

const Counter = () => {
  // 상태 가져오기
  const count = useSelector((state) => state.counter.value);
  // 상태 변경 함수
  const dispatch = useDispatch();

  return (
    <div>
      <h1>Redux Counter</h1>
      <p>Count: {count}</p>
      <button onClick={() => dispatch(increment())}>+1</button>
      <button onClick={() => dispatch(decrement())}>-1</button>
      <button onClick={() => dispatch(incrementByAmount(5))}>+5</button>
    </div>
  );
};

export default Counter;

 

3. 서버 상태(Sever State) : 서버에서 데이터를 가져오거나 저장할 때 관리하는 상태. React Query, SWR 등을 사용함.

 

 

'Redux' 카테고리의 다른 글

Store  (0) 2024.12.23
Redux 설치 및 기본 설정  (0) 2024.12.23