![](/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.