-
Notifications
You must be signed in to change notification settings - Fork 1
3. 상태, 이벤트, 부수 효과
kimdohun0104 edited this page Oct 18, 2020
·
1 revision
상태와 이벤트 그리고 부수 효과는 MVI 패턴에서 필수적인 개념입니다.
- 상태: 프로그램의 상태를 나타내며, 현재 상태를 통해서 화면을 렌더링합니다.
- 이벤트: 상태를 변경할 수 있는 유일한 방법이며,
intent()
를 통해 발생시킬 수 있습니다. - 부수 효과: 네트워크 호출, 로컬 데이터베이스 등 결과를 예측할 수 없는 활동을 말합니다.
이 3가지 요소는 아래의 형태로 정의할 수 있습니다.
data class CountState(
val count: Int = 0
) : KindaState
Kinda의 상태는 반드시 불변성을 가져야 합니다.
이는 부수 효과로부터 프로그램을 안전하게 보장하고, 데이터의 추적성을 향상시켜 디버깅과 유지보수에 도움을 줍니다.
sealed class CountEvent : KindaEvent {
object AttemptRequestCount : CountEvent()
data class SetCount(val count: Int) : CountEvent()
object Increase : CountEvent()
object Decrease : CountEvent()
}
Kinda에서 상태를 변경하기 위해선 이벤트를 발생시켜야 합니다.
이벤트는 sealed class
를 사용하여 안전하게 관리되고, when
을 사용할 때 이점을 볼 수 있습니다.
sealed class CountSideEffect : KindaSideEffect {
data class RequestCount(val userId: Int) : CountSideEffect()
}
마찬가지로 sealed class
를 사용합니다.