Ответ
MVVM в Jetpack Compose применяется для разделения UI-логики (Compose) и бизнес-логики (ViewModel). ViewModel хранит состояние и обрабатывает события, а Compose отображает UI и реагирует на изменения состояния.
Пример:
// ViewModel
class CounterViewModel : ViewModel() {
private val _count = mutableStateOf(0)
val count: State<Int> = _count
fun increment() {
_count.value++
}
}
// Composable
@Composable
fun CounterScreen(viewModel: CounterViewModel = viewModel()) {
Column {
Text(text = "Count: ${viewModel.count.value}")
Button(onClick = { viewModel.increment() }) {
Text("Increment")
}
}
}
Ключевые моменты:
- ViewModel сохраняет состояние при конфигурационных изменениях
- Compose подписывается на State из ViewModel через
remember - События передаются в ViewModel через вызовы методов
- Для внедрения ViewModel используется
viewModel()