Jetpack Compose和ViewModel实例化



下面的代码行做什么?

fun NotesApp(noteViewModel: NoteViewModel = viewModel()) {

默认参数让我很困惑。这个从ViewModel继承的类被称为NoteViewModel。默认参数不是:NoteViewModel((吗?

但它仍然有效。这怎么可能?

它是Composable中视图模型的默认初始值设定项。它接受了一个类型参数,所以我认为你在上面发布的内容还不够。

例如,如果您想初始化MainViewModel,它将类似于

val vm = viewModel<MainViewModel>()

它应该返回视图模型的相同实例,如果它是在过去创建的。

它之所以有效,是因为函数viewModel()提供了该视图模型。我想它来自androidx.lifecycle.viewmodel.compose包。

返回现有ViewModel或在给定所有者(通常是片段或活动(中创建新的ViewModel,默认为LocalViewModelStoreOwner提供的所有者。

最新更新