🤖 Compose

[Compose] Recomposition

콩드로이드 2025. 1. 6. 20:37

 

Composition

- composable을 호출해 만들어지는 것으로 ui를 기술하는 composable의 트리 구조

 

compose의 단계

 

 

Composition

- composable fun을 실행하고 ui를 표시

Layout

- ui를 배치

Draw

- ui를 랜더링 즉, 캔버스에 그림 


 

⭐️ Recomposition

- state가 바뀌었을 때 변경된 state를 반영하기 위해 Composition 업데이트

- ui를 변경하기 위해선 state가 변경되어야 함

 

Recomposition을 조절하려면 ? 

@Stable이 없어도 compose complier가 안정적으로 간주하는 타입

- 모든 Primitive 타입, 문자열, 모든 함수 타입 

위의 타입들이 아니라면 안정적이라고 간주할 수 없을 때 (ex. 리스트, 맵, 사용자 정의 객체 등) @Stable 표기해야하면 된다 

@Stable을 사용해야 하는 이유

성능 최적화: Compose는 해당 타입의 인스턴스가 변경되지 않는다고 가정하고, 불필요한 재조정을 방지 -> 성능 향상



⚠️  리스트와 같은  UI 요소를 다룰 때, 각 아이템에 고유한 키를 부여하는 것이 중요합니다. 키가 없거나 잘못된 경우, Compose는 아이템을 올바르게 추적하지 못해 불필요한 recomposition이 발생할 수 있습니다

'🤖 Compose' 카테고리의 다른 글

[Compose] Snackbar  (0) 2025.01.07
[Compose] ConstraintLayout, ConstraintSet  (0) 2025.01.07
[Compose] scaffold  (0) 2025.01.06
[Compose] Slot API  (0) 2025.01.06
[Compose] Component 알아보기 - TopAppBar  (0) 2025.01.04