如何在没有onClick的情况下重新组合?

问题描述 投票:0回答:1

为什么要重构,我们必须使用按钮的 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()

但我不知道他的意思。有谁知道我们如何使用它?我以某种方式使用了它,但它不起作用。也许我用错了

kotlin android-jetpack-compose android-jetpack
1个回答
0
投票

为什么要重构,我们必须使用按钮的 onClick 之类的事件?

您不一定需要单击按钮来重新组合可组合项。由可组合项、作用域或条件代码块读取的

MutableState
实例应更改以触发重组。

MutableState
的值可以通过多种方式更改,包括用户交互、有限或无限动画、异步操作结果(例如 Web 请求或从数据库查询返回结果)。

对于条件代码块,如

if (serie1.value == true) {
   // Composable content 
}

条件必须为真才能进入重组。但是在您的代码片段中,如果它进入“合成”,然后用户单击

Button
,则将其更改为 true,这在您的代码片段中看起来不可能。

© www.soinside.com 2019 - 2024. All rights reserved.