jetpack compose 在更改 mutableStateOf 后不会重新组织

问题描述 投票:0回答:1

我正在学习 Jetpack Compose。我的理解是,当我更改 mutableStateOf 的值时,相应的 Composable 应该重新组合。然而,在我的演示中,文本仍然显示“hello”。

@Preview
@Composable
fun Hello() {
    var text by remember { mutableStateOf("hello") }
    Column {
        Text(text = text)
        text = "world"
    }
}

文字显示“你好”

android-jetpack-compose
1个回答
0
投票

在 Jetpack Compose 中,@Composable 函数用于描述 UI 组件,并且 UI 通常根据状态变化进行更新,状态变化由 Compose 运行时捕获并导致相关 UI 部分的重组。但是,在您的 Hello 函数中,您尝试直接修改列布局块中的状态变量文本,这是不正确的。

Compose 中的 UI 描述是声明性的,您应该避免执行可能会更改 Composable 函数体内状态的操作,尤其是赋值等操作,因为此类操作不会触发 UI 的重组。 Compose 期望通过特定的机制(如 LaunchedEffect、按钮点击回调等)来更新状态以响应某些事件(如按钮点击、数据更新等)。

© www.soinside.com 2019 - 2024. All rights reserved.