[Compose] 6. Side-effects - LaunchedEffect, rememberCoroutineScope, rememberUpdatedState, DisposableEffect, SideEffect, produceState, derivedStateOf, snapshotFlow

rememberUpdatedState


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 */
}