Compose의 부수 효과 | Jetpack Compose | Android Developers
Jetpack Compose Doc 읽기 — Part1[기초]
기존의 방식에서 State를 생성하는 방법은 다음과 같았다.
mutableStateOf
val counterState = remember { mutableStateOf(0) }
Button(onClick = { counterState.value++ }) {
Text("You have clicked ${counterState.value} times")
}
mutableStateOf()
로 초기값을 설정할 수 있지만, 좀더 복잡한 로직이 들어가게 되면, State를 생성하는 함수형태로 만들고 State를 반환하도록 해야될수 있다.
produceState
는 , 컴포즈 함수의 반환값으로 State<T> 를 반환할 수 있게 한다.
@Composable
fun <T> produceState(
initialValue: T,
key1: Any?,
key2: Any?,
producer: suspend ProduceStateScope<T>.() -> Unit
): State<T> {
// result 유지
val result = remember { mutableStateOf(initialValue) }
// LaucnehdEffect로 producer 블럭 실행
LaunchedEffect(key1, key2) {
ProduceStateScopeImpl(result, coroutineContext).producer()
}
return result
}