Пересылка состояния в лямбда вызывает рекомпозицию, даже если состояние не меняется

Если , Yотносятся к типу MutableState<String>, в следующем фрагменте, и перекомпоновываются каждый раз при изменении состояния.

Случай 1

      @Composable
fun ComposableA(
    val stateX: State<String>, // X
    val stateYProvider: () -> State<String>, // { Y }
) {
    ComposableB() {
        ComposableC(stateX.value)
        ComposableD(stateYProvider)
    }
}

Но только в следующем фрагменте и каждый раз перекомпоновываются Xсостояние изменено

Случай 2

      @Composable
fun ComposableA(
    val stateX: State<String>, // X
    val stateYProvider: () -> State<String>, // { Y }
) {
    ComposableB() {
        ComposableC(stateX.value)
        ComposableD({ stateYProvider() })
    }
}

Почему это так? Разве случай 1 не должен также перекомпоновываться только и ComposableCв качестве ComposableDаргументы остаются прежними, когда ComposableBпроисходит перекомпоновка

Примечание. Передача состояний вместо значений, потому что каждый раз, когда состояние изменяется ComposableAперекомпоновывается, что не нужно

0 ответов

Другие вопросы по тегам