리액트 개발의 신세계, useReducer로 상태 관리 마스터하기!

2024. 7. 25. 23:04·웹개발/REACT
728x90

리액트로 개발을 하다 보면 상태 관리가 점점 복잡해지기 시작하죠. 그럴 때 등장하는 것이 바로 useReducer입니다.

지금부터 'useReducer'에 대해 알려드리도록 하겠습니다!


🚀 useReducer란?

useReducer는 리액트 훅 중 하나로, 상태 관리 로직이 복잡해질 때 유용하게 사용할 수 있어요. 주로 Redux와 비슷한 패턴을 따르며, 여러 개의 상태와 다양한 상태 업데이트 로직을 깔끔하게 관리할 수 있습니다.

더보기
더보기

🤚🏻Redux란

Redux는 자바스크립트 애플리케이션의 상태 관리를 위한 라이브러리입니다.
상태를 중앙 집중식으로 관리하여 애플리케이션의 상태를 더 예측 가능하고 일관성 있게 만들어줍니다.

주로 대규모 애플리케이션에서 상태 관리의 복잡성을 줄이기 위해 사용됩니다. 상태를 한 곳에서 관리함으로써, 애플리케이션의 상태 변경을 추적하고 디버깅하기 쉽게 만들어줍니다.

useReducer의 사용은 다음과 같습니다.

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

여기서 state는 현재 상태, dispatch는 상태를 업데이트하는 함수입니다. reducer는 상태 업데이트 로직을 정의하는 함수고, initialState는 초기 상태 값을 설정하는 데 사용됩니다.

 

🧐 reducer 함수의 사용 예시를 같이 볼게요!

reducer 함수는 현재 상태와 액션을 받아 새로운 상태를 반환하는 함수입니다. 다음과 같이 생겼어요:

const reducer = (state, action) => {
  switch (action.type) {
    case 'increment':
      return { count: state.count + 1 };
    case 'decrement':
      return { count: state.count - 1 };
    default:
      throw new Error();
  }
};

increment: 액션의 타입이 increment인 경우, 현재 상태의 count 값을 1 증가시켜서 새로운 상태를 반환해요.

decrement: 액션의 타입이 decrement인 경우, 현재 상태의 count 값을 1 감소시켜서 새로운 상태를 반환해요.

기본값: 지정된 액션 타입이 없는 경우, 오류를 던져요.

 

📈 기본 사용법, 어렵지 않아요!

카운터 예제를 통해 useReducer를 사용하는 방법을 알아볼게요.

import React, { useReducer } from 'react';

const initialState = { count: 0 };

const reducer = (state, action) => {
  switch (action.type) {
    case 'increment':
      return { count: state.count + 1 };
    case 'decrement':
      return { count: state.count - 1 };
    default:
      throw new Error();
  }
};

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

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

export default Counter;

이 예제에서, state는 현재 카운터 값을 나타내고, dispatch는 액션을 보내 상태를 업데이트하는 함수입니다.

 

🔍 useState와 useReducer, 언제 사용해야 할까?

useState는 간단한 상태 관리에 적합하고, useReducer는 여러 상태를 복잡한 로직으로 관리해야 할 때 유용합니다. 다음 상황에서 useReducer를 고려해보세요:

  1. 상태가 복잡할 때: 여러 개의 관련 상태를 관리해야 할 때.
  2. 상태 업데이트 로직이 복잡할 때: 다양한 상태 전환 로직이 필요할 때.
  3. Redux와 유사한 패턴이 필요할 때: 전역 상태 관리 없이 컴포넌트 내에서 비슷한 패턴을 사용하고 싶을 때.

이제 여러분도 useReducer 훅을 사용해 상태 관리를 더욱 효율적으로 할 수 있습니다. 복잡한 상태 관리가 필요할 때, 망설이지 말고 useReducer를 사용해보세요! 🚀

728x90

'웹개발 > REACT' 카테고리의 다른 글

Redux, Recoil, 그리고 Zustand: 상태 관리의 진화 🚀  (0) 2024.07.31
리액트 초보도 쉽게 따라하는 Context API 사용법!  (0) 2024.07.25
콜백 함수 알려드림.. 믿고 따라오셈  (0) 2024.07.25
useState훅, 이 글만 보시면 충분합니다!!!  (0) 2024.07.25
리액트에서 map함수 사용하기  (0) 2024.07.25
'웹개발/REACT' 카테고리의 다른 글
  • Redux, Recoil, 그리고 Zustand: 상태 관리의 진화 🚀
  • 리액트 초보도 쉽게 따라하는 Context API 사용법!
  • 콜백 함수 알려드림.. 믿고 따라오셈
  • useState훅, 이 글만 보시면 충분합니다!!!
튼튼발자
튼튼발자
프론트엔드 개발자입니다. 헬스를 가끔해서인지 몸이 튼튼한거 같습니다. 그래서 튼튼한 개발자 => 튼튼발자입니다. 프론트엔드 및 관련 개발 내용 블로그 글로 정리해서 올려둡니다.
    250x250
  • 튼튼발자
    튼튼발자
    튼튼발자
  • 전체
    오늘
    어제
    • 분류 전체보기 (192)
      • 튼튼발자의 끄적끄적 (10)
      • 웹개발 (94)
        • HTML (5)
        • CSS (2)
        • JavaScript (40)
        • TypeScript (5)
        • REACT (22)
        • Next.js (13)
        • GIt (7)
      • 기타 (3)
        • 일상 (3)
      • 프로젝트 (27)
        • Componique: UI 컴포넌트 라이브러리 (18)
        • GitHub Profile Viewer (8)
        • 잇핏 (1)
      • 프론트엔드 개발자로 취업준비 (1)
        • 기술 면접 (7)
        • 코딩 테스트 준비하기 (0)
        • 자기소개서&지원서&이력서 (0)
      • 컴퓨터과학 (12)
        • 운영체제 (6)
        • 알고리즘 (6)
      • 전공 공부 (37)
        • AI(인공지능) (2)
        • 컴퓨터네트워크 (19)
        • 네트워크프로그래밍 (3)
        • SW소프트웨어응용설계 (7)
        • 클라우드컴퓨팅 (3)
        • 웹서비스프로그래밍 (3)
      • PT (0)
      • 취준일기 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    tailwind
    JS
    componique
    프론트엔드개발
    TCP
    웹개발
    ui컴포넌트
    데이터전송
    네트워크
    자바스크립트
    상태관리
    코딩
    프론트엔드
    github
    JavaScript
    리액트
    프로그래밍
    NextJs
    react
    트랜스포트계층
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
튼튼발자
리액트 개발의 신세계, useReducer로 상태 관리 마스터하기!
상단으로

티스토리툴바