- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Google CodeLabs:这是代码:
@Composable
fun WaterCounter(
modifier: Modifier = Modifier,
) {
var count by remember { mutableStateOf(0) }
Column(
modifier = modifier.padding(16.dp)
) {
if (count > 0) {
var showTask by remember { mutableStateOf(true) }
if (showTask) {
WellnessTaskItem(
taskName = "Have you taken your 15 minute walk today?",
onClose = { showTask = false })
}
Text(
text = "You've had $count glasses",
modifier = modifier.padding(16.dp)
)
}
Row(
modifier = modifier.padding(top = 8.dp)
) {
Button(
onClick = { count++ },
enabled = count < 10,
) {
Text(text = "add one")
}
Button(
onClick = { count = 0 },
modifier = modifier.padding(start = 8.dp)
) {
Text(text = "Clear water count")
}
}
}
}
我听不懂这个短语:"按 Clear water 计数按钮将count 重置为 0 并重新组合。显示count 的文本,以及与 WellnessTaskItem 相关的所有代码都不会被调用并离开组合。showTask 被遗忘,因为没有调用调用记住 showTask 的代码位置。“
请帮我理解为什么忘记了show task? “代码未被调用”和“它离开组合”是什么意思?
最佳答案
条件代码块在条件为真时进入组合,在条件不再为真时离开组合。当计数为零时,该 block 将被删除,下次进入组合时,请记住存储 showTask
和 true
值。
例如下面的代码块
@Composable fun App() {
val result = getData()
if (result == null) {
Loading(...)
} else {
Header(result)
Body(result)
}
}
这些 block 还根据结果是否为空输入组合。进入组合意味着它是一个开始执行的节点,当在该 block 中读取的 State
更新时,会发生重组,这意味着同一 block 将更新为新值。
当结果为 null Loading Composable 进入组合时,假设它有一个进度条,当它增加时 Loading Composable 被重新组合。
当结果出现时 Loading Composable 退出组合
Header(result)
Body(result)
此外,可组合 block 也不一定需要与 UI 相关。例如,您可以使用 LaunchedEffect 创建一个 Composable block 来显示 SnackBar。
if (count > 0 && count <5) {
// `LaunchedEffect` will cancel and re-launch if
// `scaffoldState.snackbarHostState` changes
LaunchedEffect(scaffoldState.snackbarHostState) {
// Show snackbar using a coroutine, when the coroutine is cancelled the
// snackbar will automatically dismiss. This coroutine will cancel whenever
// if statement is false, and only start when statement is true
// (due to the above if-check), or if `scaffoldState.snackbarHostState` changes.
scaffoldState.snackbarHostState.showSnackbar("count $count")
}
}
当计数大于 0 时,此 block 将进入组合,并在计数小于 5 时保持组合,但由于它是 LaunchedEffect,它将触发一次,但如果计数达到 5 的速度快于 Snackbar 持续时间,Snackbar 将被取消,因为 block 离开组合。
您可以使用 DisposableEffect
检查 Composable 何时进入和退出组合
您可以查看这篇文章进行更深入的分析。
https://medium.com/androiddevelopers/under-the-hood-of-jetpack-compose-part-2-of-2-37b2c20c6cdd
关于kotlin - Remember in Composition 被遗忘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72705876/
我正在开始开发一个使用 JSF 2 作为 View 技术的新 Web 应用程序。 我之前没有使用 JSF 的经验,对这些概念有点困惑。 我阅读了一些关于 JSF 的文档,主要思想是它是一个基于组件的框
我试图找出这是一个 JSF/EL 问题还是这里出了什么问题。 基本上,我想将项目对象作为 ui:param 传递给 ui:composition 并在里面有一个按钮(即引导按钮,因此它们实际上是 ht
我是 GWT 的新手,正在尝试制作一个简单的应用程序(例如 fmylife 的小型版本)。到目前为止,我制作了一个加载事实的复合 Material 和另一个具有提交新事实的表单的复合 Material
我对 Agda 很陌生,我正在尝试做一个简单的证明“ map 的组合就是组合的 map ”。 (来自 this course 的练习) 相关定义: _=$=_ : {X Y : Set}{f f' :
我有三个组合(compFinal、compSlide1 和 compSlide2)。 我已经使用脚本将 compSlide1 和 compSlide2 添加到 compFinal 组合中。 我使用以下
我有以下情况: #{cc.attrs.someValue} 因此,在我的复合组件中,我正在调用其他一些复合组件,并尝试将提供给“主”复合组件的参数
我正在尝试使用 Constraint composition并希望为每个复合约束定义组,如下例所示:- 复合约束 @Target({ ElementType.FIELD, Elemen
尝试使用 Jetpack Compose 显示 AlertDialog,但应用程序在调用 AlertDialog 函数时崩溃,错误为 java.lang.IllegalStateException:
我想根据按钮的可见性属性重绘组合中的按钮。我根据其中的按钮进行合成以调整大小,并且我正在使用以下代码来刷新合成。问题:下面的代码工作正常,但按钮从未在复合中重新定位请帮忙。代码中是否缺少要重新定位的内
我正在研究 After Effects 脚本并使用 AE 脚本指南作为学习基础。 我有一个 After Effect 项目,其中包含两个 AE 项目,并且每个项目中都有多个项目。 我想从具有特定名称的
我一直在学习如何在 python 编程中实现组合,但我很难理解为什么它比继承更受欢迎。 例如,这是迄今为止我的代码: class Particle: # Constructor (public)
概述 是一种结构型模式,将对象以树形结构组织起来,以表示“部分 - 整体”的层次结构,使得客户端对单个对象和组合对象的使用具有唯一性。 UML类图 上面的类图包含的角色: Compone
我们已经尝试去定义类。定义类,就是新建了一种类型(type)。有了类,我们接着构造相应类型的对象。更进一步,每个类型还应该有一个清晰的接口(interface),供用户使用。 我们可以在一个新类的
一、Options API的弊端 Options api的一大特点就是在对应得属性中编写对应的模块。比如data定义数据、methods中定义方法、computed中定义计算属性、watch中监听属性
我正在使用 SWT ScrolledComposite,但是当我在 Windows 中滚动时,如果我快速滚动,我会出现一些撕裂/闪烁。我该怎么做才能加倍缓冲或减少这种影响,或者我该怎么做才能覆盖默认滚
在 JSP 和 JSTL 中我通常会做这样的事情: ${user.name} ${user.description}
几周以来,我们的 Web 应用程序出现了性能问题。首先我们认为问题属于大 DOM。大 DOM 并不是很好,但这不是主要的性能问题。 问题在于复合组件。过去几周,我们开发了核心复合组件,以减少代码冗余并
如何在 mySQL 中创建复合主键。在 table1 中,我需要将 id1、id2 设置为复合主键。我使用了这个查询。但它使每个成为主键。它检查每个条目的重复项 ALTER TABLE `table1
我是 Java 的新手,我想将背景图像添加到 Composite。我只能使用 SWT,不能使用 JFace。我正在使用 eclipse indigo IDE (3.8),当我想设置背景图像时,首先我将
我有一个程序必须使用复合键来管理对象。这个键,简单来说就是几个字符串。 我有以下代码: public struct MyKey { public string Part1 { get; set
我是一名优秀的程序员,十分优秀!