Какой знаешь Effect помимо DisposableEffect и LaunchedEffect

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

Ответ

SideEffect — выполняет код при каждой рекомпозиции, без привязки к ключу. Полезен для синхронизации состояния Compose с внешним миром (например, обновление View-системы).

SideEffect {
    // Вызывается при каждой рекомпозиции
    toolbar.title = composeState.title
}

ProduceState — запускает корутину и производит состояние, автоматически отменя её при выходе из композиции.

val state by produceState(initialValue = "") {
    val data = repository.fetchData()
    value = data
}

rememberUpdatedState — сохраняет актуальное значение лямбды, даже если она меняется, избегая перезапуска эффектов.

val currentOnTimeout by rememberUpdatedState(onTimeout)
LaunchedEffect(Unit) {
    delay(1000)
    currentOnTimeout() // Использует последнюю версию onTimeout
}