Redux는 JavaScript 애플리케이션을 위한 예측 가능한 상태 컨테이너입니다. 주로 React와 함께 사용되지만, Vue, Angular와 같은 다른 프레임워크나 라이브러리와도 사용할 수 있습니다. Redux는 애플리케이션의 상태 관리를 단순화하고, 상태 업데이트를 일관되고 예측 가능한 방식으로 처리합니다.
Redux 개념
상태 (State)
애플리케이션의 상태는 하나의 큰 JavaScript 객체로, 앱에서 사용되는 모든 데이터를 포함합니다.
액션 (Action)
상태를 변화시키는 이벤트입니다. 액션은 type
속성을 가진 객체로, 어떤 상태 변화를 일으킬지 설명합니다. 필요에 따라 추가 데이터를 payload
로 전달할 수 있습니다.
리듀서 (Reducer)
액션에 의해 상태가 어떻게 변경되어야 하는지 정의하는 순수 함수입니다. 리듀서는 이전 상태와 액션을 인자로 받아 새 상태를 반환합니다.
스토어 (Store)
애플리케이션의 상태와 리듀서를 포함하는 객체입니다. 스토어는 앱의 상태를 저장하며, getState()
, dispatch(action)
, subscribe(listener)
같은 메서드를 통해 상태를 관리합니다.
데이터 흐름
Redux의 데이터 흐름은 엄격하게 단방향입니다:
- 액션 발송: UI에서 사용자의 상호작용 또는 다른 이벤트에 응답하여 액션을 발송(dispatch)합니다.
- 리듀서 실행: 스토어는 현재 상태와 발송된 액션을 리듀서에 전달합니다. 리듀서는 액션 타입에 따라 새 상태를 계산합니다.
- 상태 업데이트: 리듀서가 반환한 새 상태는 스토어에 저장됩니다. 이 과정을 통해 앱의 상태가 업데이트됩니다.
- UI 업데이트: 상태가 변경되면, 스토어를 구독하는 UI 컴포넌트가 새 상태에 맞게 갱신됩니다.
Redux 사용 이유
예측 가능한 상태 관리
Redux는 모든 상태 변화를 중앙에서 관리하여, 애플리케이션의 동작을 더 예측 가능하게 만듭니다.
디버깅 용이
Redux DevTools와 같은 도구를 사용하여 상태 변화를 시간에 따라 추적하고, 액션에 따른 상태 변화를 확인할 수 있습니다.
컴포넌트 간 상태 공유
전역 상태를 사용하여, 여러 컴포넌트 간에 상태를 쉽게 공유하고 업데이트할 수 있습니다.
유지 보수성
액션과 리듀서를 통한 명확한 구조는 대규모 애플리케이션의 유지 보수성을 향상시킵니다.
결론
Redux는 그 자체로는 작은 라이브러리지만, 애플리케이션의 상태 관리를 위한 강력한 아키텍처를 제공합니다. 크고 복잡한 애플리케이션, 특히 여러 상태를 공유하고 다루어야 하는 경우 Redux를 사용하는 것이 좋습니다.
이 문서는 Redux의 핵심 개념과 데이터 흐름, 그리고 Redux를 사용하는 이유를 정리한 것입니다. Redux는 상태 관리를 단순화하고, 예측 가능하게 만들어주는 도구로, 특히 복잡한 애플리케이션에서 유용합니다.
'Javascript & Typescript' 카테고리의 다른 글
enum을 사용하는 이유 (0) | 2024.05.31 |
---|---|
TypeScript 컴파일 타임과 런타임에서의 URL 파라미터 처리 (0) | 2024.05.26 |
TypeScript 컴파일 과정 및 NestJS 프로젝트 빌드 (0) | 2024.05.26 |
Javascript 객체 인자를 사용하는 함수 호출에서 발생한 오류와 해결 방법 (0) | 2024.04.04 |
Typescript의 알 수 없는 return type 오류 (0) | 2024.03.14 |