안녕하세요 웹 YB 권새봄입니다!
요즘 정말 많은 상태 관리가 있는데, 어떤 상태 관리 방식이 적절한지, 제가 상태 관리 방식에 대해 잘 알고 있는지에 대해 정리를 해보고자 이 글을 작성하게 됐습니다 !!
📌 상태 관리란?
React에서 상태(State)란 UI의 데이터나 특정 값들을 저장하고 관리하는 개념입니다. 하지만, 애플리케이션이 커질수록 컴포넌트 간 상태 공유가 필요해지고, 이를 체계적으로 관리해야 하는 상황이 옵니다.
그렇다면, React에서 상태 관리 방법은 어떤 것들이 있을까요? 그리고 어떤 상황에서 어떤 상태 관리 라이브러리를 선택해야 할까요?
🎯 상태의 종류
먼저, 상태를 크게 두 가지로 나눌 수 있습니다.
1. 로컬 상태 (Local State)
특정 컴포넌트 내부에서만 사용하는 상태useState
, useReducer
를 사용하여 관리
👀 언제 사용할까요?
- 하나의 컴포넌트에서만 필요한 상태일 때
- 부모-자식 관계에서만 간단한 상태 공유가 필요할 때
2. 전역 상태 (Global State)
여러 컴포넌트에서 공유해야 하는 상태Context API
, Redux
, Recoil
, Zustand
등의 라이브러리를 사용하여 관리
👀 언제 사용할까요?
- 여러 컴포넌트에서 공통적으로 사용하는 데이터 (ex. 로그인 정보, 테마 설정 등)
- 부모-자식 관계를 넘어서 여러 곳에서 상태를 공유해야 할 때
🎯 상태 관리 라이브러리 비교
React에서 사용되는 대표적인 상태 관리 방법들을 비교해보겠습니다 !
라이브러리 | 특징 | 장점 | 단점 |
---|---|---|---|
useState / useReducer | 기본적인 상태 관리 | 간단한 상태 관리 가능 | 전역 상태 관리 어려움 |
Context API | 기본적인 전역 상태 관리 | Redux 없이 글로벌 상태 가능 | 성능 최적화 필요 |
Redux | 전역 상태 관리 표준 | 예측 가능한 상태 관리, 디버깅 용이 | 설정이 복잡하고 코드가 많아짐 |
Recoil | React 전용 상태 관리 | 간단한 문법, 비동기 상태 관리 가능 | 생태계가 Redux보다 작음 |
Zustand | 가벼운 전역 상태 관리 | Redux보다 간단하고 직관적 | 대규모 프로젝트에서는 부족할 수 있음 |
🎯 상황별 맞는 상태관리
- 간단한 상태 →
useState
,useReducer
- 작은 규모의 전역 상태 →
Context API
- 대규모 프로젝트, 복잡한 상태 →
Redux
- React 전용 상태 관리, 직관적인 API →
Recoil
- Redux보다 가벼운 상태 관리 →
Zustand
💡 결론
상태 관리는 React 애플리케이션을 설계할 때 반드시 고민해야 하는 중요한 주제입니다.
컴포넌트가 적을 때는 useState, useReducer 같은 기본 훅만으로도 충분히 상태를 관리할 수 있지만, 애플리케이션이 커지고 컴포넌트 간에 데이터 공유가 많아질수록 전역 상태 관리가 필요해집니다.
📌 결국 중요한 건 상태 관리 라이브러리 자체가 아니라, 애플리케이션의 규모와 특성, 개발 팀의 협업 방식에 맞는 도구를 선택하는 것이므로 여러가지 상태 관리 라이브러리를 익혀두고 필요한 곳에 적절하게 사용하는 것이 좋을 것 같습니다!
'3주차' 카테고리의 다른 글
Tailwind CSS 4.0 설정 문제 해결하기: PostCSS 플러그인 오류부터 Vite 설정까지 (0) | 2025.05.02 |
---|---|
styled-components와 @emotion/styled (0) | 2025.05.02 |
Emotion CSS-in-JS (0) | 2025.05.02 |
React 의 클로저 (0) | 2025.05.02 |
React 함수 및 컴포넌트 네이밍 규칙 — 개념부터 기업 실전까지 (0) | 2025.05.02 |