У меня есть структура вложенных компонентов в Jetpack Compose, где глубоко вложенный компонент должен взаимодействовать с ViewModel. Я пытаюсь определить лучший подход для обработки этого взаимодействия.
Вот структура моего компонента:
class MainViewModel : ViewModel() {
fun handleButtonClick() {
// Do something
}
}
// Approach 1: Passing ViewModel down
@Composable
fun ComposableA(viewModel: MainViewModel) {
ComposableB()
ComposableC(viewModel = viewModel)
}
@Composable
fun ComposableC(viewModel: MainViewModel) {
ComposableD(viewModel = viewModel)
}
@Composable
fun ComposableD(viewModel: MainViewModel) {
Button(onClick = { viewModel.handleButtonClick() }) {
Text("Click Me")
}
}
// Approach 2: Using Callbacks
@Composable
fun ComposableA(viewModel: MainViewModel) {
val onButtonClick = { viewModel.handleButtonClick() }
ComposableB()
ComposableC(onButtonClick = onButtonClick)
}
@Composable
fun ComposableC(onButtonClick: () -> Unit) {
ComposableD(onButtonClick = onButtonClick)
}
@Composable
fun ComposableD(onButtonClick: () -> Unit) {
Button(onClick = onButtonClick) {
Text("Click Me")
}
}
Which approach is considered better practice?
Подробнее здесь: https://stackoverflow.com/questions/791 ... e-callback