CompositionLocal을 사용한 로컬 범위 지정 데이터 | Jetpack Compose | Android Developers
일반적인 컴포즈 패턴에서, 상태(State)는 루트 컴포즈로부터 하위 컴포즈로 흐른다.
Root에 선언된 상태를 깊은 하위계층에 컴포즈까지 전달하는 방법은 복잡하다.
@Composable
fun MyApp() {
// Theme information tends to be defined near the root of the application
// 테마 정보는 주로 애플리케이션의 루트 근처에서 정의되는 경향이 있음
val colors = …
}
// Some composable deep in the hierarchy
// 깊은 하위계층의 컴포즈
@Composable
fun SomeTextLabel(labelText: String) {
Text(
text = labelText,
color = // ← 루트에 선언된 color 값을 깊은 하위계층 까지 가져와야됨
)
}
보통 하위계층의 컴포져블 함수에 데이터를 전달하기 위해서는 composable 함수의 param 으로 명시적으로 전달하는 형태로 함수를 구현한다.
컴포져블 계층이 깊거나, 동일한 param을 여러곳에서 사용하는 경우 CompositionLocal
을 통해서 암묵적으로 데이터를 넘겨줄 수 있다.