프론트엔드/React

(React) 로컬 상태 관리

그린티_ 2025. 5. 7. 20:00
반응형

로컬 상태 관리 (useState, useReducer)

React에서 가장 기본적인 상태 관리 방식은 바로 로컬 상태(Local State)

컴포넌트 내부에서만 사용하는 간단한 상태를 관리할 때 사용함

로컬 상태란?

로컬 상태는 오직 컴포넌트 내부에서만 사용하는 상태

다른 컴포넌트와 공유할 필요 없는 값들을 관리할 때 적합함

예를 들어

  • 모달의 열림/닫힘 상태
  • 입력창 값
  • 버튼 클릭 여부
  • 간단한 카운트

이런 것들이 모두 로컬 상태에 해당

 

 

1. useState – 가장 기본적인 상태 관리

import React, { useState } from 'react';

function Counter() {
  const [count, setCount] = useState(0);

  return (
    <div>
      <p>현재 카운트: {count}</p>
      <button onClick={() => setCount(count + 1)}>+1</button>
    </div>
  );
}

 

설명

useState(초기값)으로 상태를 선언하고 배열 구조 [상태값, 변경함수]를 받아

setCount로 상태를 바꾸면 컴포넌트가 자동으로 다시 렌더링됨!

 

 

2. useReducer – 복잡한 상태 관리에 적합

상태 종류가 여러 개이거나, 조건 분기 로직이 복잡한 경우에는 useReducer가 좋아요~

import React, { useReducer } from 'react';

const initialState = { count: 0 };

function reducer(state, action) {
  switch (action.type) {
    case 'increment':
      return { count: state.count + 1 };
    case 'decrement':
      return { count: state.count - 1 };
    default:
      return state;
  }
}

function Counter() {
  const [state, dispatch] = useReducer(reducer, initialState);

  return (
    <div>
      <p>카운트: {state.count}</p>
      <button onClick={() => dispatch({ type: 'increment' })}>+1</button>
      <button onClick={() => dispatch({ type: 'decrement' })}>-1</button>
    </div>
  );
}

 

설명

useReducer는 상태 로직을 reducer 함수로 분리할 수 있어서, 업데이트 조건이 많을 때 코드를 더 깔끔하게 유지할 수 있음!

 

 

useState vs useReducer

  • 단순한 토글, 숫자 변경, 입력 값 추적 → useState
    • 저는 보통 서버에서 받은 데이터를 간단하게 여기서 관리하기도 했었습니당
  • 복잡한 상태 전이, 조건 분기, 여러 상태 관리 → useReducer
반응형

'프론트엔드 > React' 카테고리의 다른 글

(React) 리액트란?  (0) 2025.11.16
(React) 전역 상태 관리  (0) 2025.05.11
(React) 상태관리 설명  (0) 2025.05.07
(React) 기본 구조 SPA  (0) 2025.05.07
(React) 프로젝트 생성 및 시작  (0) 2025.05.06