Для чего нужен derivedStateOf в Jetpack Compose

«Для чего нужен derivedStateOf в Jetpack Compose» — вопрос из категории Jetpack Compose, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

derivedStateOf используется для оптимизации рекомпозиций в Jetpack Compose. Он создаёт производное состояние, которое пересчитывается только при изменении зависимостей, но не вызывает рекомпозицию родительского компонента, если результат остался прежним.

Пример:

val listState = rememberLazyListState()
val showButton by remember {
    derivedStateOf {
        listState.firstVisibleItemIndex > 0
    }
}

if (showButton) {
    Button(onClick = { /*...*/ }) {
        Text("Наверх")
    }
}

Здесь showButton будет пересчитываться при прокрутке списка, но вызовет рекомпозицию только при изменении значения (true/false), а не при каждом скролле. Это особенно полезно для часто изменяющихся состояний, где важно избежать лишних рекомпозиций.