val (getter, setter) = remember {
mutableStateOf(false)
}
Row(verticalAlignment = Alignment.CenterVertically,
modifier = Modifier.padding(horizontal = 20.dp)
) {
Checkbox(checked = getter, onCheckedChange = setter)
Text(text = "당신은 개발자입니까?", modifier = Modifier.clickable { setter(!getter) })
}
컴포저블 함수의 재구성을 효율적으로 관리하기 위해 상태를 저장할 때 사용됩니다. Compose의 재구성(recomposition) 과정에서 값이 초기화되지 않도록, 특정 상태를 메모리에 유지시켜주는 역할을 합니다.
Compose에서는 화면이 업데이트될 때 컴포저블 함수가 다시 호출됩니다. 이때, 함수 내부의 로컬 변수는 기본적으로 매번 초기화됩니다. 하지만 우리가 원하는 건, 재구성 중에도 특정 값(상태)을 유지하는 것이죠. remember는 이를 가능하게 해줍니다.
remember를 사용하지 않으면?
val (getter, setter) = remember { mutableStateOf(false) }
val checked = remember { mutableStateOf(false) }
Checkbox(
checked = checked.value,
onCheckedChange = {
checked.value = !checked.value
}
)