android - 将 viewModel 注入@Composable
问题描述
我的 ProfileScreen 有 viewModel。
@Composable
fun ProfileScreen() {
val viewModel: ProfileViewModel = viewModel()
...
}
每次我调用 ProfileScreen 时,都会创建新的 viewModel。我怎样才能为我的 ProfileScreen 创建一个 viewModel 实例。我尝试在https://insert-koin.io/docs/reference/koin-android/compose/之后注入 viewModel但是当我尝试
val viewModel: ProfileViewModel = viewModel()
Android Studio 抛出错误。
解决方案
viewModel
每当您销毁可组合物时,您都会被销毁,它可以在重新组合后幸存下来,但是一旦您的可组合物被销毁,它就会被销毁。
您可以做的是viewModel
在一个比 ProfileScreen 组合寿命更长的范围内创建,然后将viewModel
as 参数传递给它。
像这样的东西应该工作。
@Composable
fun MainScreen() {
val vModel : ProfileViewModel = viewModel()
....
ProfileScreen(vModel)
}
推荐阅读
- python - 将 dict 的 JSON 嵌套列表转换为 DataFrame
- django - django DRF 自定义权限:详细视图的视图级权限
- javascript - 将数组元素插入表格 JavaScript / 并防止随机数重复
- prolog - 在序言中获得类似“确认此操作”功能的最佳方法?
- python - 如何在 Python 中对图例标签进行分组?
- javascript - 在 NodeJs Express 中集成服务器发送的事件
- python - 在 Anaconda 本地运行 github 存储库
- php - 从 PHP 中的多维数组中删除包含键和值的所有单引号时遇到问题
- javascript - 按顺序初始化类
- react-dnd - React-Dnd - 如何控制相对于光标的拖动预览位置并获取相对于放置目标的放置位置