Image
Android Jetpack Compose/Compose Side Effect

[Compose Side Effect] LaunchedEffect에서 한 번만 실행되어야 하는 동작 처리하기

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())
    }
}

 

반응형

 

이 글의 저작권은 '조세영의 Kotlin World' 에 있습니다. 글, 이미지 무단 재배포 및 변경을 금지합니다.

 

 

Kotlin, Android, Spring 사용자 오픈 카톡

오셔서 궁금한 점을 질문해보세요!
비밀번호 : kotlin22

open.kakao.com