이 문서는 Redux 에 대해서 아주 간결하게 정리한 문서로 기본적인 개념만 가볍게 정리하였다. Android Redux architecture 를 적용 하기 위해서 공부한 내용들을 정리한 내용 들 이다.
Redux 는 javascript 에서 사용되는 글로벌 상태 관리 도구 이다. Redux 의 흐름을 간단하게 보면 다음과 같다.
정의된 이벤트를 Action 으로 정의 하고 이 를 Middleware 를 통해 핸들링 한 뒤 Reducer 를 통해서 단일 State 를 Store 에 저장 하고 이 State 를 구독하는 View 에서 UI 를 갱신 하는 형태 로 unidirectional flow 를 구성 하기 에 적절 하다.
Action 은 View 를 변화시키기 위해 Store 를 통해 dispatch 되는 Event 들 을 정의 한 Immutable Data 인스턴스 이다. Action 은 사용자가 발생시킨 Action 그리고 Action 에서 파생된 Result Action인 Success Action, Failed Action 등 이 존재 할 수 있다.
또한, Action 은 Domain 단위에 따라 재정의 되어 dispatch 할 수 있다.
State 는 domain별로 단 한개의 최신 상태를 갖게 되는 Immutable Data 인스턴스로서 View 에 변화를 주기 위한 데이터를 포함한 객체이다. State 는 Action 이 dispatch 되어야만 갱신 되어 Store 에 저장된다.
State 는 Domain 단위에 따라 각 상태에 따라 재정의 된다.
dispatch 된 Action 을 이터레이셔닝 하면서 핸들링 한다. middleware 는 1개 일수도 그 보다 많을 수 있다. 모든 middleware 를 이터레이셔닝 모두 지나거나 혹은 중간에 기존의 Action 을 토대로 새로운 Action 이 될 수 있다.
Middleware 를 통해서 나온 Action 을 분기 하여 State를 만들어 준다. 생성된 State 는 Store 를 통해서 구독 할 수 있다.
최신 상태인 State 와 Reducer들을 갖는 인스턴스이다. Store 를 통해서 새로운 Action 을 dispatcbh 하거나 특정 State 를 subscribe 할 수 있다.
위 내용은 아주 가볍게 알아본 redux 의 기본 컴포넌트들 이다. 이 컴포넌트들 을 안드로이드 아키텍쳐에 적용 하는 방법은 이 문서를 참고 하도록 하자.