![](/img/trans.png)
[英]Android Compose cannot preview composable function in android studio “Rendering problem ”
[英]Android Compose how to update other Composable function better way?
尽管使用 Compose 通常建议将事件传递给应用程序逻辑(如 ViewModel)而不是应用程序 UI( 在 Compose 中思考),但如果您确实需要这样做,以下是您的代码的外观:
@Composable
fun ComposableA() {
val addLogEntry = remember { mutableStateOf(false) }
Column {
Button(onClick = {
addLogEntry.value = true
}) {
Text(text = "Log")
}
ComposableB(addLogEntry = addLogEntry.value) {
addLogEntry.value = false
}
}
}
@Composable
fun ComposableB(
addLogEntry: Boolean,
onLogEntryAdded: () -> Unit
) {
if (addLogEntry) {
Log.d("Shadowmeld", "onAddLogEntry")
onLogEntryAdded()
}
}
在这里,您将 function 作为第二个参数(onLogEntryAdded,采用 lambda 表达式格式)传递给 ComposableB。 这个通过 lambda 表达式将从 ComposableB 调用以修改 ComposableA 中的 state。
我相信有更好的方法可以做到这一点,比如在 ComposableA 中声明 ComposableB(将 state 提升到 ComposableA),或者,如果这不是一个选项,则将 Button onClick 事件传递给 ComposableA 和 ComposableB 都可以观察到的 ViewModel。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.