rememberUpdatedState
는 Compose 함수에서 최신 상태를 기억하고, 업데이트하는 함수다.
rememberUpdatedState
없이 아래와 같이 block 내부에서 oneTimeout()
을 사용한다면, oneTimeout()
의 상태가 launch 시점의 상태로 고정된다.
@Composable
fun LandingScreen(onTimeout: () -> Unit) {
LaunchedEffect(true) {
delay(SplashWaitTimeMillis)
oneTimeout()
//launch 시점의 상태로 고정됨
}
/* Landing screen content */
}
rememberUpdatedState
를 사용하면 상태가 업데이트 될때마다 콜백이 재생성된다.
@Composable
fun LandingScreen(onTimeout: () -> Unit) {
// onTimeout의 상태를 기억하고, 상태가 업데이트 될때마다 콜백이 재생성된다.
val currentOnTimeout by rememberUpdatedState(onTimeout)
LaunchedEffect(true) {
delay(SplashWaitTimeMillis)
currentOnTimeout()
//항상 최신 state의 재생성된 콜백을 참조한다.
}
/* Landing screen content */
}