【发布时间】:2021-09-17 23:16:42
【问题描述】:
我知道在架构上这绝对不是一件好事,但我在可组合中嵌入了一个 for 循环来更新状态,如下所示:
@Composable
fun WorkScreen(name: String?) {
var text by remember {
mutableStateOf(0)
}
Box(
contentAlignment = Alignment.Center,
modifier = Modifier.fillMaxSize()
) {
Text(text = "YOU PRESSED ME $text")
}
for (i in 1..100) {
text = i
}
}
我的期望是,当我切换到这个屏幕时,for 循环应该更新 mutableState 并因此导致重新组合,从而导致时间增加。但是,如果我将 for 循环放在 Box 函数下方,我只会得到 YOU PRESSED ME 0,或者如果我将它放在 Box 函数上方,我会得到 YOU PRESSED ME 100。
以下问题:Why my composable not recomposing on changing value for MutableState of HashMap?,看起来确实很相似,但我不确定它在这里如何应用。在我看来,我正在将文本值更新为i!
【问题讨论】:
-
我认为结果应该是“你按了我 100 分”。
-
您希望文本多久更新一次?一秒钟一次?一毫秒一次?瞬间?
-
@MARSK 否,一种情况是 0,另一种情况是 100。
-
@ianhanniballake 理想情况下,我希望每秒一次!
标签: android kotlin android-jetpack-compose android-jetpack