스토어 설정
이 페이지에서는 Redux 스토어를 구성하고, 타입이 지정된 훅을 설정하며, 프로젝트 구조를 정리하는 방법을 다룹니다.
폴더 구조
프로젝트는 일관성과 유지보수를 위해 다음 구조를 반드시 따라야 합니다:
src/
app/
store.ts # 스토어 설정
hooks.ts # 타입이 지정된 훅(useAppDispatch/useAppSelector)
shared/
types/ # DTO(API), 도메인 모델, 매퍼
utils/ # 공통 유틸리티
services/
client.ts # RTK Query 기본 클라이언트
baseQuery.ts # auth/chainId/retry가 포함된 기본 쿼리
features/
user/
user.client.ts # RTK Query 엔드포인트
user.slice.ts # UI 상태 슬라이스
user.selectors.ts # 메모이즈된 셀렉터
__tests__/ # 테스트
land/
land.client.ts
land.slice.ts
land.selectors.ts
credits/
credits.client.ts
credits.slice.ts
credits.selectors.ts폴더 구성 원칙
기능 기반 - 기술적 역할이 아니라 비즈니스 도메인별로 그룹화하세요
함께 배치 - 관련 코드는 함께 두세요
명확한 분리 - 원격 데이터(
.client.ts)와 로컬 상태(.slice.ts)
스토어 설정
스토어는 RTK의 configureStore 및 필요한 모든 미들웨어를 포함해야 합니다.
기본 스토어 설정
구성 옵션
직렬화 가능성 검사
이 serializableCheck 미들웨어는 모든 상태가 직렬화 가능한지 검증합니다. 알려진 예외는 무시하도록 구성하세요:
절대 비활성화하지 serializableCheck 마세요. 대신 예외를 구성하고 직렬화 불가능한 데이터는 Redux 외부에 두세요.
개발자 도구
디버깅을 위해 개발 환경에서 Redux DevTools를 활성화하세요:
프로덕션 디버깅이 필요하다면, 다음과 같이 특정 구성을 사용하세요:
타입 지정 훅
타입이 지정된 버전을 생성하세요 useDispatch 및 useSelector 더 나은 타입 추론과 개발자 경험을 위해.
훅 설정
컴포넌트에서의 사용
타입 지정 훅의 장점
자동 완성 - 상태 구조에 대한 완전한 IntelliSense
타입 안전성 - 컴파일 시 오류 포착
리팩터링 - 자신 있게 상태 속성 이름 변경
반복 코드 감소 - 지정할 필요 없음
RootState반복해서
Provider 설정
앱을 Redux Provider로 감싸세요:
Next.js App Router
Next.js Pages Router
React (Vite/CRA)
환경 구성
환경별 설정을 구성하세요:
타입 정의
일관성을 위해 공통 타입 정의를 생성하세요:
여러 스토어 인스턴스
테스트 또는 마이크로 프런트엔드를 위해 여러 스토어 인스턴스가 필요할 수 있습니다:
모범 사례
1. 단일 스토어
애플리케이션마다 하나의 스토어 인스턴스만 사용하세요:
2. 리듀서 지연 로딩
코드 분할을 위해 리듀서를 동적으로 주입하세요:
3. 핫 모듈 교체
개발 환경에서 리듀서에 HMR을 활성화하세요:
4. 상태 영속화
redux-persist를 사용할 때는 신중하게 구성하세요:
다음 단계
마지막 업데이트