LaunchedEffect에서 한 번만 실행되어야 하는 동작 처리하기
LaunchedEffect는 key값이 바뀌면 블록내의 동작을 취소한 후 다시 실행한다. 따라서 한 번만 수행해야하는 작업들은 LaunchedEffect에 true나 Unit을 넘겨주는 방향으로 실행해야 한다.
@Composable
fun KotlinWorldScreen(oneTimeEffect: () -> String) {
LaunchedEffect(true) {
oneTimeEffect()
}
}
이렇게 하면 oneTimeEffect()는 한 번만 수행된다.
LaunchedEffect에서 한 번만 실행되어야 하는데 동작이 길 때 처리하기
LaunchedEffect에서 긴 동작의 람다식을 처리해야 할 때는 rememberUpdatedState를 이용해 lambda를 기억해야 한다.
@Composable
fun KotlinWorldScreen(longTimeJob: suspend () -> String) {
val rememberLongTimeJob by rememberUpdatedState(longTimeJob)
LaunchedEffect(true) {
println(rememberLongTimeJob())
}
}
반응형