@Composble Annotation을 이용하여 선언하며 Composable이 호출되면 앱 안에서 해당영역이 이미지로 변환될 때 사용자에게 표시되고 동작되는 방식을 정의하는 데이터와 property의 집합을 전달한다.
Composable 함수는 Stateful Composable과 Stateless Composable로 분류된다.
Stateful Composable
@Composable
fun Counter() {
val count = remember { mutableStateOf(0) }
Button(onClick = { count.value++ }) {
Text("Clicked ${count.value} times")
}
}
Stateful Composable은 자체적으로 하나 이상의 상태를 관리하는 Composable 함수이다.
하나의 컴포저블 함수는 해당 컴포저블 함수 또는 컴포저블함수가 호출한 컴포저블의 형태나 동작을 정의하는 강태값을 저장할 수 있다.
상태값을 저장하려면 remember
키워드를 이용하고 mutableStateOf
함수를 호출한다.
@Composable
fun CountButton(text: String = "StartClick", count: Int = 0) {
var count by remember { mutableStateOf(count) }
Button(modifier = Modifier.padding(16.dp),
onClick = {
count++
})
{
when {
count == 0 -> Text(text = text)
count % 2 == 0 -> Text(text = "odd $count")
else -> Text("even: $count")
}
}
}
UI의 동적인 부분을 반영하고 자신의 상태에 대한 전체적인 제어권을 가지고 있다.