Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- TwomonUSB
- #큐구조 #큐다운로드
- 스레드 #코루틴
- 안드로이드 스튜디오 애뮬레이터
- var 와 val
- Room
- 라이브데이터 postValue
- 데이터바인딩
- Room 데이터베이스 업데이트
- json 저장
- TowmonUSB 연결오류
- 코틀린 트리거 버튼
- 토글 험수
- compse collectAsState
- compse state
- apk이름변경
- withContext
- mutable
- 코틀린 이미지저장 #파일저장
- livedata
Archives
- Today
- Total
EnjoyLife
코틀린의 livedata 와 같은 기능 state 본문
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를 사용하는 것이 좋습니다.
'안드로이드 개발 > JetPack Compse' 카테고리의 다른 글
ComposeUI > TextField 에 입력후 출력및 화면 회전시 값 유지 (0) | 2024.06.26 |
---|---|
State 사용하는 이유 (0) | 2023.12.11 |
collectAsState 를 사용하는 이유 (0) | 2023.12.11 |