Код: Выделить всё
@Composable
fun Sandbox() {
val state = rememberLazyListState()
LazyColumn(
state = state,
modifier = Modifier.height(200.dp)
) {
// This line of code leads to sporadic recompositions.
// No recompositions once that line is commented out.
val test = DoSomething(state)
items(count = 50, key = {index -> index}) { index ->
Text(text = "Item: $index")
}
}
}
fun DoSomething(state: LazyListState) : Int? {
val items = state.layoutInfo.visibleItemsInfo
return null
}
[img]https://i. stack.imgur.com/d85xK.png[/img]
Как только я удаляю вызов DoSomething(state), у меня нет этой проблемы. Почему чтение состояния приводит к перекомпозиции?
Обновление:
[*]Обратите внимание, что элементы перекомпонуются, даже если их не трогают. Насколько я понимаю в Compose, их следует пропускать.
[*]При перемещении val test = DoSomething(state) из LazyColumn все работает как надо (Sandbox перекомпонует , LazyColumn пропускается, элементы вообще не затрагиваются). Однако мой вопрос не о том, как заставить его работать, а о том, почему он не работает должным образом при вызове val test = DoSomething(state) из LazyColumn
Подробнее здесь: https://stackoverflow.com/questions/783 ... mpositions
Мобильная версия