Add a ViewModel to a Composable
Last updated
Last updated
라이프사이클: ViewModel은 UI 데이터를 라이프사이클에 맞춰 관리하도록 설계되어, 화면 회전과 같은 구성 변경 중에도 데이터를 안전하게 유지할 수 있습니다.
필수 의존성:
Jetpack Compose에서 ViewModel을 사용하려면 프로젝트에 lifecycle-runtime-compose
와 lifecycle-viewmodel-compose
의존성을 추가해야 합니다.
구현 방법:
ViewModel
클래스를 확장하여 ViewModel 클래스를 생성합니다.
생성한 ViewModel을 컴포저블 함수나 액티비티에서 초기화하고 참조합니다.
이를 통해 UI 데이터를 효율적으로 관리하고 앱 라이프사이클 동안 데이터를 유지할 수 있습니다.
설명:
remember { mutableStateOf(0) }
를 사용해 UI 상태를 관리합니다.
버튼을 클릭하면 count
값이 증가하고, 텍스트는 즉시 업데이트됩니다.
설명:
ViewModel에서 MutableStateFlow
를 생성하고 값을 업데이트합니다.
Compose에서 collectAsState()
를 사용해 StateFlow를 구독합니다.
값이 변경되면 Compose UI가 즉시 업데이트됩니다.
Compose State는 단일 Compose 함수 안에서 상태를 관리합니다. - 쉬운 예시) Compose의 상태는 교실의 칠판과 같습니다. 칠판에 숫자나 글자를 쓰면 모두가 즉시 볼 수 있고, 내용을 지우고 새로 쓰면 즉시 반영됩니다. UI가 데이터를 보고 즉시 업데이트되는 방식이 Compose State의 작동 원리입니다.
Kotlin StateFlow는 ViewModel 또는 데이터 계층에서 상태를 관리하며, 여러 구독자가 데이터를 공유할 수 있습니다. - 쉬운 예시) StateFlow는 뉴스 방송과 비슷합니다. 뉴스 채널이 계속 새로운 소식을 보내면 여러 사람들이 이를 동시에 시청할 수 있습니다. 뉴스가 업데이트되면 모든 시청자가 이를 즉시 확인할 수 있죠. StateFlow는 앱의 여러 부분이 데이터를 듣고 반응할 수 있도록 업데이트를 전달하는 방식으로 작동합니다.