我正在学习 Jetpack Compose。我的理解是,当我更改 mutableStateOf 的值时,相应的 Composable 应该重新组合。然而,在我的演示中,文本仍然显示“hello”。
@Preview
@Composable
fun Hello() {
var text by remember { mutableStateOf("hello") }
Column {
Text(text = text)
text = "world"
}
}
文字显示“你好”
在 Jetpack Compose 中,@Composable 函数用于描述 UI 组件,并且 UI 通常根据状态变化进行更新,状态变化由 Compose 运行时捕获并导致相关 UI 部分的重组。但是,在您的 Hello 函数中,您尝试直接修改列布局块中的状态变量文本,这是不正确的。
Compose 中的 UI 描述是声明性的,您应该避免执行可能会更改 Composable 函数体内状态的操作,尤其是赋值等操作,因为此类操作不会触发 UI 的重组。 Compose 期望通过特定的机制(如 LaunchedEffect、按钮点击回调等)来更新状态以响应某些事件(如按钮点击、数据更新等)。