为什么要重构,我们必须使用按钮的 onClick 之类的事件?
例如我的代码是:
if (movieSearchinfo.movieorserie == "serie") {
val serie1 = remember { mutableStateOf(false) }
if (serie1.value == true) {
Column(
modifier = Modifier
.verticalScroll(
rememberScrollState()
)
.height(100.dp)
) {
LazyColumn(
modifier = Modifier
.padding(4.dp)
) {
items(movieDetail.value) { movieDetail ->
if (movieDetail.se == "1") {
serie1.value = true
GetSerieCard(
Modifier,
movieDetail
)
}
}
}
}
当我最后一个 if 之后,我说: serie1.value = true,为什么 jetpack 不重新组合并且不制作我的第一个 if 的 UI?因为 serie1.value 现在变成真了吗?
我看到了我们可以使用的地方:
currentComposer.composition.recompose()
但我不知道他的意思。有谁知道我们如何使用它?我以某种方式使用了它,但它不起作用。也许我用错了
为什么要重构,我们必须使用按钮的 onClick 之类的事件?
您不一定需要单击按钮来重新组合可组合项。由可组合项、作用域或条件代码块读取的
MutableState
实例应更改以触发重组。
MutableState
的值可以通过多种方式更改,包括用户交互、有限或无限动画、异步操作结果(例如 Web 请求或从数据库查询返回结果)。
对于条件代码块,如
if (serie1.value == true) {
// Composable content
}
条件必须为真才能进入重组。但是在您的代码片段中,如果它进入“合成”,然后用户单击
Button
,则将其更改为 true,这在您的代码片段中看起来不可能。