RxSwift 도입
- 프로젝트에 RxSwift를 활용해 코드를 짜고 협업하는 사람과 코드를 합치고 리뷰를 하다보니 MVVM 아키텍쳐를 따른다해도 각각 자기 스타일 대로 코딩을 함.
- 컨벤션을 통일 시키면 좋겠다..
- 찾아보니 ReactorKit이라는 라이브러리가 있음
ReactorKit
- Reactor는 Rx의 개념인 Observable과 함께 사용하여 비동기적으로 데이터를 처리하고, UI와의 상호 작용을 쉽게 관리할 수 있는 구조를 만듬
- MVVM 모델의 뷰 모델 역할


- 사용자의 Action은 Reactor로, Reactor에서 방출된 State는 View로 Observable 스트림을 통해 전달
- View는 Action만 방출 할 수 있고 Reactor는 State만 방출 할 수 있음.
Reactor
- ViewController로부터 action stream을 전달 받아 내부에서 mutate, reduce 과정을 거쳐 state stream으로 vc에게 전달
- mutate()
- Action 스트림을 Mutation 스트림으로 변환, 변환된 스트림은 reduce() 함수로 전달 됨
- reduce()
- 이전 State와 Mutation을 활용해 새로운 State를 반환
Global State
- ReactorKit은 global app state를 정의하지 않음