请先查看下面的代码
class WellnessViewModel : ViewModel() {
private val _tasks = getWellnessTasks().toMutableStateList()
val tasks: List<WellnessTask>
get() = _tasks
现在,我将任务传递给ComposeFunction,并且_TASKS中的任何更改(添加或删除项)都会导致ComposeFunction重新组合.但这到底是如何工作的,因为我为该函数提供了非状态对象,这是下面的代码.
@Composable
fun WellnessScreen(
modifier: Modifier = Modifier,
wellnessViewModel: WellnessViewModel = viewModel()
) {
Column(
modifier = modifier
) {
StatefulCounter()
WellnessTasksList(
list = wellnessViewModel.tasks,
onCloseTask = {
wellnessViewModel.remove(it)
},
onCheckedTask = { task, checked ->
wellnessViewModel.changeTaskChecked(task, checked)
}
)
}
}
为什么这样做是有效的,如何做到这一点,需要一个简单的解释.