当 Jetpack Compose 中变量的 MutableState 发生变化时,有没有办法执行函数调用

And*_*lly 4 android android-jetpack-compose

我创建了一个名为 的变量currentlySelectedJobId,这使我能够在用户在代码中的其他位置选择作业 ID 时捕获该作业 ID。

发生这种情况时,我想将我LazyRow的项目滚动到该对象。


LazyRow(state = scrollState) {
items(....
......
}
Run Code Online (Sandbox Code Playgroud)

然而,我正在努力寻找一种方法来捕获变化currentlySelectedJobId并执行操作scrollState.animateScrollToItem(index = 0)

有没有办法做到这一点 ?

Phi*_*hov 8

您可以将LaunchedEffect变量用作 a key:自最新重组以来每次发生变化时都会调用该变量key

LaunchedEffect(currentlySelectedJobId) {
    scrollState.animateScrollToItem(index = 0)
}
Run Code Online (Sandbox Code Playgroud)

这也将在初始重组时被调用,因此根据您的代码,您可能需要跳过此初始调用。