Composition
- composable을 호출해 만들어지는 것으로 ui를 기술하는 composable의 트리 구조
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 |