Ответ
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
}