作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
查看 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/
在不使用 ANT 的情况下,有没有办法让 Eclipse 在我每次发布 Android 应用程序(我使用导出向导)时不提示我输入 keystore 密码(两次!)? p.s.-我的开发 PC 位于 a
我是一名优秀的程序员,十分优秀!