State
를 가지고 있으면Stateful, State를
가지고 있지 않으면Stateless
입니다.
Stateful
remember를 사용하여 객체를 저장하는 컴포저블은 내부 State
를 생성하여 컴포저블을 Stateful
하게 만듭니다. 우리가 앞서 만들었던 예제들은 Stateful
한 컴포저블의 예가 됩니다. 이는 호출하는 쪽에서 상태를 관리할 필요가 없다는 편리함이 있지만 재 사용성이 적고 테스트하기 어려운 경향이 있습니다.
@Composable
fun Greeting2() {
var name by remember { mutableStateOf("") }
Column(modifier = Modifier.padding(16.dp)) {
if(name.isNotEmpty())
Text(
text = "Hello! $name",
modifier = Modifier.padding(bottom = 8.dp),
style = MaterialTheme.typography.bodyMedium
)
OutlinedTextField(
value = name,
onValueChange = { name = it},
label = { Text("Name")}
)
}
}
위 예시처럼 State
가 개수에 상관없이 컴포저블 안에 있는 경우 Stateful
하다고 봅니다.
Stateless
State
를 갖지 않는 컴포저블입니다. State
를 가지지 않으면 UI 표현을 어떻게 하는 거냐라고 할 수 있지만 호이스팅(Hoisting)이란 개념을 알고 있다면 할 수 있습니다
재 사용 가능한 컴포저블을 개발할 경우 동일한 컴포저블의 Stateful
버전과 Stateless
버전 모두 노출해야 하는 경우가 있습니다
Stateful
버전은 상태 관리 할 필요 없는 호출자에게 유용하며, Stateless
버전은 상태를 제어하거나 끌어올려야 하는 호출자에게 필요합니다
Stateless
는 다음 게시글인 State Hoisting에서 상세하게 다뤄보겠습니다
참고
상태 및 Jetpack Compose | Android Developers
이 페이지는 Cloud Translation API를 통해 번역되었습니다. 상태 및 Jetpack Compose 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 앱의 상태는 시간이 지남에 따라
developer.android.com
'안드로이드(Compose) > 개념' 카테고리의 다른 글
remember 강제 재실행하는 방법 (0) | 2024.04.11 |
---|---|
Compose에서 State를 복원하는 방법 (0) | 2024.04.04 |
State Hoisting(상태 호이스팅) (0) | 2024.03.27 |
지원되는 기타 State 유형 (0) | 2024.03.20 |
State and Jetpack Compose (0) | 2024.03.18 |