useState: 컴포넌트 레벨의 로컬 상태 관리
useReducer: 복잡한 상태 로직 관리 (Redux와 유사한 패턴으로 상태 업데이트)
useContext: 전역 상태 공유 (prop drilling 해결)
Redux: Redux Toolkit으로 사용하는 대규모 상태 관리 라이브러리
Zustand: 심플하고 가벼운 전역 상태 관리, Provider 없이 사용
Jotai: Context보다 빠르고 직관적인 상태 관리
Recoil: 상태 간 의존성과 Selector로 유연한 상태 관리
Valtio: 객체처럼 다루며 간단하게 사용하는 상태 관리
Mobx: 객체지향적 상태 관리, 반응성 높은 UI
TanStack Query: 서버 상태 관리 특화, API 데이터 관리 시 사용
SWR: 간단한 데이터 페칭과 캐싱 필요 시 사용
Apollo Client: 로컬 상태와 원격 상태 통합 관리 (GraphQL 전용)
React Hook Form: 성능 최적화 폼 라이브러리, 최소 리렌더링
Formik: 폼 상태와 유효성 검사 필요시 사용
개념:
라이브러리:
atom()함수로 원자 생성atom()과 selector() 사용장점:
개념:
Action → Dispatcher → Store → View
↑ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ↓
←←←←←←←←←←←←←←←←←
라이브러리:
장점:
개념:
라이브러리:
장점:
예시 (Valtio):
const state = proxy({ count: 0 })
// 직접 변경 가능
state.count += 1
Atomic Store (Jotai, Recoil)
상태 간 복잡한 의존성 있을 때
세밀한 성능 최적화가 필요할 때
상태를 작은 단위로 나누어 관리하고 싶을 때
Flux Pattern (Redux, zustand)
예측 가능한 상태 변화가 중요할 때
팀 개발에서 일관성이 필요할 때
디버깅과 테스트가 중요할 때
Proxy Store (Valtio, Mobx)
빠른 프로토타이핑이 필요할 때
불변성 관리가 번거로울 때
직관적인 코드 작성을 원할 때