下面的代码行做什么?
fun NotesApp(noteViewModel: NoteViewModel = viewModel()) {
默认参数让我很困惑。这个从ViewModel继承的类被称为NoteViewModel。默认参数不是:NoteViewModel((吗?
但它仍然有效。这怎么可能?
它是Composable中视图模型的默认初始值设定项。它接受了一个类型参数,所以我认为你在上面发布的内容还不够。
例如,如果您想初始化MainViewModel
,它将类似于
val vm = viewModel<MainViewModel>()
它应该返回视图模型的相同实例,如果它是在过去创建的。
它之所以有效,是因为函数viewModel()
提供了该视图模型。我想它来自androidx.lifecycle.viewmodel.compose
包。
返回现有ViewModel或在给定所有者(通常是片段或活动(中创建新的ViewModel,默认为LocalViewModelStoreOwner提供的所有者。