Compose는 선언형(Declarative) UI 프레임워크
즉, UI 업데이트는 상태(State)를 변경하는 것만으로 이루어져.
❌ 기존 XML 기반 UI
→ 명령형 방식으로 UI 요소를 찾아 수동으로 업데이트해야 함
✅ Compose
→ 상태를 변경하면 Compose가 UI를 자동으로 다시 그림 (재구성)
var name by remember { mutableStateOf("") }
// name 값이 변경되면 Recomposition이 발생하고 새로운 UI가 생성됨
| 함수 | 설명 | 사용 예제 |
|---|---|---|
remember | 컴포지션 동안 상태 유지 | 단순 UI 상태 |
rememberSaveable | 회전 등 구성 변경 시 상태 유지 | 입력값 저장 |
rememberUpdatedState | 최신 이벤트 상태 유지 | 이벤트 리스너 |
✅ remember
var count by remember { mutableStateOf(0) }
// 컴포지션 중에만 상태 유지
// 화면 회전 시 초기화됨
✅ rememberSaveable
var count by rememberSaveable { mutableStateOf(0) }
// 화면 회전 시에도 상태 유지
// Bundle에 저장할 수 있는 값만 가능
✅ rememberUpdatedState
@Composable
fun TimerExample(onTimeout: () -> Unit) {
val updatedOnTimeout by rememberUpdatedState(onTimeout)
LaunchedEffect(Unit) {
delay(5000)
updatedOnTimeout()
}
}
// 최신 이벤트 값을 항상 유지