簡體   English   中英

Android Composable如何更新其他Composable function更好的方法?

[英]Android Compose how to update other Composable function better way?

截屏

我只想單擊按鈕可以記錄 ComposeableB()。或者類似這樣,例如,如果您單擊 ComposableA,ComposableB 將啟動 animation 而不是更新數據。

盡管使用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM