gpt4 book ai didi

android - Jetpack Compose 记得实际上做了什么,它是如何在引擎盖下工作的?

转载 作者:行者123 更新时间:2023-12-03 20:02:23 25 4
gpt4 key购买 nike

查看 codelab 的基本教程,有一个 fragment 可以在单击时增加按钮上的计数器

@Composable
fun MyScreenContent(names: List<String> = listOf("Android", "there")) {
val counterState = remember { mutableStateOf(0) }

Column(modifier = Modifier.fillMaxHeight()) {
Column(modifier = Modifier.weight(1f)) {
for (name in names) {
Greeting(name = name)
Divider(color = Color.Black)
}
}
Counter(
count = counterState.value,
updateCount = { newCount ->
counterState.value = newCount
}
)
}
}


@Composable
fun Counter(count: Int, updateCount: (Int) -> Unit) {
Button(
onClick = { updateCount(count + 1) },
colors = ButtonConstants.defaultButtonColors(
backgroundColor = if (count > 5) Color.Green else Color.White
)
) {
Text("I've been clicked $count times")
}
}
很明显 remember { mutableStateOf(0) }存储状态/值。我的问题是记住在引擎盖下做了什么。使用 var count = remember { 0 }mutableStateOf(0)没有 记住不会增加值(value)。
fun MyScreenContent(names: List<String> = listOf("Android", "there")) {

var count = remember { 0 }

Column(modifier = Modifier.fillMaxHeight()) {
Column(modifier = Modifier.weight(1f)) {
for (name in names) {
Greeting(name = name)
Divider(color = Color.Black)
}
}
Counter(
count = count,
updateCount = { newCount ->
count = newCount
}
)
}
}
上面的 fragment 不会更新打印在 Text 上的值, 记得只适用于 MutableState ?

最佳答案

记住 - 允许您记住以前重构调用的状态,仅此而已。
因此,例如,如果您在初始运行时随机化颜色。随机颜色将计算一次,并在需要重新组合时重复使用。
所以 ...
记住 = 存储值以防万一 recompose 将被调用。
现在第二件事是知道何时应该实际触发重新编写。
可变状态会提供帮助。
mutablestate = 存储值 AND 以防我使用此数据更新值触发器重组所有元素。

关于android - Jetpack Compose 记得实际上做了什么,它是如何在引擎盖下工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65368007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com