[Compose] 수명주기

KSang·2024년 4월 30일
0

compose

목록 보기
2/5

리컴포지션 콜사이트를 통해서 구분,

매개변수가 있냐 없냐도 중요한데, 심화해서 공부할때 알아볼것

for문등으로 같은 콜사이트에서 여러번 컴포저블을 호출할경우 실행순서를 통해 컴포저블을 구분

상단이나 가운데에 추가된다면 매개변수의 위치가 변경된 모든 컴포저블에서 리컴포저블 발생

@Composable
fun Screen(movies: List<Movie>) {
	Column {
		for (movie in movies) {
			Movie(movie)
		}
	}
}

@Composable
fun Movie(movie: Movie) {
	Column {
		val image = loadNetworkImage(movie.url)
		MovieHeader(image)
	}
}

다음 코드에서 Movie가 호출되고 loadNetwork가 불림

loadNetworkImage에서 이미지를 로드하는 동안 상단에 Movie가 추가가 되면 리컴포지션 되면서 로드가 취소됨
-> 리소스 낭비

key()를 통해 Unique한 아이디로 구별해줘서 리컴포지션을 막아야 함

@Composable
fun MoviesScreenWithKey(movies: List<Movie>) {
    Column {
        for (movie in movies) {
            key(movie.id) { // Unique ID for this movie
                MovieOverview(movie)
            }
        }
    }
}

0개의 댓글