Ответ
- Изменение состояния (
State) – рекомпозиция вызывается при изменении любогоStateилиMutableState, за которым следитremember.
var count by remember { mutableStateOf(0) }
Button(onClick = { count++ }) { Text("$count") } // Рекомпозиция при клике
-
Изменение входных параметров (
@Composable) – если аргументы функции меняются, Compose перезапускает её. -
Обновление
keyвLazyColumn/LazyRow– изменениеkeyприводит к рекомпозиции соответствующего элемента. -
Принудительная рекомпозиция (
invalidate) – можно вызвать вручную черезCompositionLocal.current.recomposeScope.invalidate(). -
Изменение
CompositionLocal– если значениеCompositionLocalProviderобновляется, все@Composable, использующие его, рекомпозируются. -
Эффекты (
LaunchedEffect,SideEffect) – могут запускать рекомпозицию при изменении ключей или состояния. -
*Анимации (`animateAsState`)** – анимируемые значения вызывают рекомпозицию на каждом кадре.