Using state in Jetpack Compose – 단방향 데이터 흐름 이해하기 | 찰스의 안드로이드
컴포즈의 계층 관계에서 상위 컴포즈의 State는 하위 컴포즈에 인수로 전달할 수 있다.
@Composable
fun FunctionA() {
var swtichState by rememher { mutableStateOf(true) }
// 하위 컴포즈로부터 event를 호출받으면, 상위컴포즈에서 직접 자신의 state 를 변경한다.
val onSwitchChange = { value : Boolean -> switchState = value }
FunctionB(
// State 는 하위 컴포즈로 전달할 수 있다.
switchState = switchState,
// State는 하위 컴포즈에서 직접 변경할 수 없으므로,
// Event를 하위컴포즈에서 호출해 상위 컴포즈에서 직접 State를 변경한다.
onSwitchChange = onSwitchChange
)
@Composable
fun FunctionB(switchState: Boolean, onSwitchChange : (Boolean) -> Unit) {
//swtichState 가 변경될때마다, FucntionB 도 파라미터로 받으니 같이 재구성된다.
Switch(
checked = switchState,
onCheckedChange = onSwitchChange
)
}
위와같은 상위 컴포즈로부터 State
를 받고, Event
를 상위 컴포즈에 위임하는것을 상태 끌어올리기(State Hoisting)
이라고 한다.