1. What is MVI?

Intent : 의도를

Model : 상태로 만들어

View : 표시하는 것

- How it works?

User 상호작용 → Intent 생성 → State or SideEffect 생성 → View가 State or SideEffect 변화를 collect → view 변경

- Pure Cycle

순수 함수 : 함수의 입력만이 함수의 결과에 영향을 주는 함수.

Pure Cycle 또한 순수 함수와 같은 맥락. 모든 행동(intent)의 결과는 state로 귀결됨.

각 페이지별로 하나의 state만 만들어두고, 해당 state를 덮어쓰기 하며 사용함. → 단 하나의 state만 존재하기 때문에 여러 state가 중복된다거나, 충돌하는 경우가 없음.

- Side Effect Cycle

부수효과(Side Effect) : 외부세계 상태를 변화시키거나, 외부 세계로부터 상태 변화

SideEffectCycle == Pure Cycle + SideEffect

일반적으로 화면이 변해야 하는경우(Recomposition)이 아닌 모든 경우가 SideEffect라고 생각하면 됨.

Pure Cycle에서 벗어난 모든 상태는 SideEffect! ex) toast

순수함수가 뭐고 부수효과가 뭔데?

2. Why MVI?

  1. 유의미한 테스트가 가능