android - 可以将流从一个可组合传递到另一个吗?
问题描述
我有一个显示事件流的视图模型。我将该 viewModel 注入到顶级可组合中,但我想将事件发送到另一个可组合(在顶级可组合内)。像这样的东西:
@Composable
fun MainScreen(viewModel: MyViewModel) {
SomeComponent(viewModel.events)
// Other Stuff
}
@Composable
fun SomeComponent(events: Flow<MyEvent>) { // MyEvent is a sealed class
LaunchedEffect(Unit) {
events.collect {
// Process the events
}
}
// Other stuff
}
我收集SomeComponent
而不是收集流量的原因MainScreen
是因为我需要访问某些内部状态SomeComponent
(实际上是 ScaffoldState)来处理事件。
我在我的应用程序中编写了这段代码,一切似乎都正常,但我不确定这是否是一件好事。
我的问题是:
我错过了这种方法有什么缺点吗?这里可能出了什么问题?
解决方案
将流作为参数传递很好。流没有什么特别之处。它只是另一个数据源,就像其他任何东西一样。如果你没有把它传入,你将不得不想出一些其他的方法来访问它,这可能会导致打破 Composables 应该遵守的单向流模式。
推荐阅读
- javascript - 如何知道两个元素的 z-index
- java - Sparql 查询适用于 wikidata 端点,但不适用于 JENA 界面
- javascript - 图像右边界到图像父 div 右边界的距离
- php - 从PHP中的NxN矩阵中删除总和最小的行
- javascript - 在“@angular/cdk/a11y”中找不到导出“isFakeTouchstartFromScreenReader”
- sql - Oracle SQL - 数据透视表计数和列可能会动态增长
- javascript - 将 JS 正则表达式转换为不使用lookbehind
- regex - 使用 gensub 和 awk 进行非贪婪匹配替换
- javascript - 是否可以在 Window.confirm() 按钮上添加单击事件侦听器?
- python - Python ctypes API 调用导致访问冲突