EnjoyLife

코틀린의 livedata 와 같은 기능 state 본문

안드로이드 개발/JetPack Compse

코틀린의 livedata 와 같은 기능 state

Aiden96 2023. 12. 11. 11:35

LiveData와 유사한 기능이 있습니다. 바로 State입니다. State는 Compose에서 데이터를 관리하는 데 사용되는 선언형 데이터 구조입니다. LiveData와 마찬가지로 State는 값이 변경될 때 UI를 자동으로 업데이트합니다.

State는 LiveData와 몇 가지 차이점이 있습니다. 첫째, State는 항상 최신 값을 포함합니다. LiveData는 데이터의 이전 값을 포함할 수 있습니다. 둘째, State는 Compose의 뷰 계층에 직접 바인딩할 수 있습니다. LiveData는 뷰 계층에 바인딩하려면 중개자(Mediator)를 사용해야 합니다.

State를 사용하는 방법은 다음과 같습니다.

 

@Composable 안의 함수에서는 State를 변경하기 위해 State 객체의 value 속성을 직접 할당하는 것이 아니라, state 객체의 value를 변경하는 state 함수를 사용해야 합니다.

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun Test() {
    var inputTxt by remember {
        mutableStateOf("")
    }
    var outTxt by remember { mutableStateOf("") }
    Column(
        modifier = Modifier
            .fillMaxSize()
            .padding(16.dp)
    ) {
        TextField(
            value = inputTxt,
            onValueChange = { inputTxt = it },
            modifier = Modifier.fillMaxWidth()
        )
        Button(
            onClick = {
                outTxt = inputTxt
                inputTxt = ""
            },
            modifier = Modifier.align(Alignment.End)
        ) {
            Text("클릭")
        }
        Text(
            text = "출력: $outTxt",
            fontSize = 14.sp,
            modifier = Modifier.padding(16.dp)
        )
    }
}

 

 

State는 LiveData보다 사용하기 쉽고 효율적입니다. 따라서 Compose에서 데이터를 관리하는 데 State를 사용하는 것이 좋습니다.