@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
Text(
text = "Hello $name!",
modifier = modifier
)
}
Composable 함수는 Jetpack Compose에서 UI를 구성하는 가장 기본적인 요소로, @Composable 어노테이션이 적용된 함수이다. 이 함수는 다른 Composable 함수를 호출할 수 있다.
Composable 함수는 재사용 가능한 작은 단위로 만들어지고, 이를 기반으로 복잡한 UI를 구성함으로써 UI를 효율적으로 작성하고 유지 관리할 수 있다.
Composable 함수는 Composable 또는 UI Component라고도 부른다.
@Composable 어노테이션
@Composable 어노테이션으로 정의되어야 한다.데이터를 입력받고 UI를 정의
멱등성(Idempotence)
트리 구조
Composable 함수는 순서대로 실행되지 않는다.
@Composable
fun ButtonRow(){
MyNavigation{
StartScreen() // 1
MiddleScreen() // 2
EndScreen() // 3
}
}
// 위 코드가 꼭 1 -> 2 -> 3 순서로 실행된다는 보장이 없다는 의미다.
Composable 함수는 병렬적으로 실행할 수 있다.
@Composable
fun NamePlate(name: String, lastname: String) {
Column(modifier = Modifier.padding(16.dp)) {
Text(text = name)
Text(text = lastname, style = MaterialTheme.typography.subtitle1)
}
}
// Compose Compiler는 위 코드를 아래와 같이 변환
fun NamePlate(name: String, lastname: String, $composer: Composer<*>) {
...
Column(modifier = Modifier.padding(16.dp), $composer) {
Text(
text = name,
$composer
)
Text(
text = lastname,
style = MaterialTheme.typography.subtitle1,
$composer
)
}
...
}
Composer는 Compose Runtime에서 사용되는 내부 도구로, Composable 트리의 상태를 관리한다.Composer 객체를 암묵적으로 전달받는다.Composer는 트리의 업데이트 및 재구성을 처리한다.Jetpack Compose Internals - JORGE CASTILLO