1. 코드의 양 감소
목록이나 애니메이션을 만드는 데 필요한 코드가 적게 필요함
Kotlin과 Xml 파일을 전환하며 작업하지 않아 관리하기 좋음
코드의 길이가 줄어들어 유지 보수 장점
2. 직관적
3. 빠른 개발 과정
기존의 모든 코드들과 호환 (Views를 Compose에서, Compose를 Views에서 호출 가능함)
ViewModel, Navigation 및 Coroutine 등 일반적인 라이브러리도 자유롭게 사용 가능함
Preview 기능을 제공하여 UI 구성요소를 미리 확인 가능하며 빠른 개발 가능
4. 편리한 기본 지원 기능
머티리얼 디자인, 어두운 테마, 애니메이션을 기본적으로 지원
원하는 대로 디자인하고 싶다면 머티리얼 디자인을 분리할 수 있음
Greeting 함수는 name을 전달받아 Text 위젯을 화면에 내보냄
위 함수에서 Button 클릭 시 onClick 람다가 호출되고, clicks 값 업데이트. 이후 Text는 바뀐 clicks 값을 사용해 재구성 (Text 재호출)
+) Compose는 새 입력이 들어왔을 때 자동으로 변경되었을 수 있는 함수, 람다만 호출하고 나머지는 건너뛰므로 효율적임
순서와 관계없이 실행될 수 있음
StartScreen에서 전역변수를 설정하고 MiddleScreen에서 활용 불가능함
동시에 실행될 수 있음
위 함수가 여러 스레드에서 동시에 호출될 수 있고, 그럴 경우 items 변수가 모든 재구성에서 수정되어 잘못된 값으로 설정될 수 있음
재구성은 가능한 한 많이 건너뜀
위 함수에서 header만 변경되어 재구성하는 경우, NamePicker 함수의 상위 Composable 및 header를 참조하지 않는 LazyColumn 부분은 재구성하지 않음
재구성은 낙관적임
컴포저블의 매개변수가 변경되었을 가능성이 조금이라도 있다면 재구성함
(모든 Composable 함수 및 람다에 부작용이 없어야 함)
Composable 함수는 매우 자주 실행될 수 있음