viewModel by viewModels:“by”是什么意思?

viewModel by viewModels: What does "by"?

提问人:cluster1 提问时间:11/5/2023 更新时间:11/5/2023 访问量:78

问:

有人可以解释一下“by”在这里的作用吗?

val viewModel by viewModels<ProductsVM>()

这段代码是如何工作的?那里会发生什么?

android kotlin android-jetpack-compose android-viewmodel

评论

4赞 broot 11/5/2023
它是一个委托属性

答:

3赞 Darian-Cătălin Cucer 11/5/2023 #1

用于属性委派。使用 声明属性时,将属性的 getter 和 setter 调用到对象。byby

viewModels它是 Jetpack 库中架构组件的一部分。 是 MVVM (Model-View-ViewModel) 架构中使用的属性,用于保存或创建活动或片段。viewModels

val viewModel by viewModels<ProductsVM>()

viewModel是 Activity 或 Fragment 中的属性,并将其委托给 的 。该行获取与范围关联的内容。如果 已经存在,它将被返回,否则,它将被创建。viewModelsProductsVMProductsVMViewModelViewModel

使用句柄 to 以正确创建和保留关联的 .viewModel by viewModels<ProductsVM>()viewModelviewModelsProductsVMViewModel