android - 当 Jetpack Compose 中变量的 MutableState 发生变化时,有没有办法执行函数调用
问题描述
我创建了一个名为 的变量currentlySelectedJobId
,这允许我在用户在我的代码中的其他位置选择它时捕获作业 ID。
发生这种情况时,我想将我LazyRow
的项目滚动到该对象。
LazyRow(state = scrollState) {
items(....
......
}
但是,我正在努力寻找一种捕捉变化currentlySelectedJobId
并执行动作的方法scrollState.animateScrollToItem(index = 0)
有没有办法做到这一点 ?
解决方案
尝试这个
@Composable
fun List(
currentlySelectedJobId: Int, //Pass a 'delegated' MutableStateValue here
state: //... The last scroll state
){
LaunchedEffect(currentlySelectedJobId){
state.animateScrollToItem(currentlySelectedJobId)
}
}
LaunchedEffect
这里用于在每个合成或键更改时仅触发一次功能。我将键作为作业 id 传递(假设它与索引相同),然后动画到该值。
您可以阅读有关 LaunchedEffect 和其他副作用的更多信息
推荐阅读
- symfony - 必须安装 Zend-crypt 才能使用 zenstruck/form-bundle 中的 ajax_entity_controller
- excel - 用户表单在 excel 中仅显示 3 个命令按钮中的 1 个
- javascript - 在异步函数中同时进行 fetch(),并在使用 JavaScript 完成后返回
- javascript - 有没有更好的方法在 React 中导出多个命名函数?
- performance - 为什么在每个 clEnqueue 函数中都会调用 clGetPlatformInfo?
- c - 如何交换使用指向数组的指针定义的二维数组中的行?
- firebase - 如何在 vuetify 和 firebase 中使用 v-for 动态添加图像
- flask - Flask-Login 未注册用户给出 500 错误
- python - 用二进制值重新采样熊猫数据帧的问题
- sql - 在 Entity Framework Core / LINQ 中为 group by / count() 优化查询