이것저것 만져보다가 remember과 mutableStateOf가 계속 헷갈렸다.
검색해보니 글이 꽤 많았다. 나만 헷갈린건 아닌갑지....
var variableName: DataType = value // Mutable(값 변경 O)
val constantName: DataType = value // Immutable (값 변경 X)
문서에서 계속 세 단어가 번갈아가며 나와 먼저 정리한다.
컴포지션Composition: Jetpack Compose가 컴포저블을 실행할 때 빌드하는 UI에 대한 설명. 어떻게 UI가 구조하고 있는지 보여준다.

위와 같이 컴포지션 상태에 있을 때 컴포저블이 그려진다.
컴포저블Composable: UI를 보여주는 함수들. 플러터의 위젯과 유사하다.
컴포즈Compose: 구성요소, 구성하다. 공식 문서에서는 Jetpack Compose를 줄여서 Compose로 부른다.
둘은 재구성을 한 뒤에도 값을 의도대로 유지하기 위해 사용한다. 값이 업데이트되면 mutableStateOf을 통해 컴포저블들이 리컴포지션을 하게 만들고, remember로 업데이트된 값을 보장한다.
remember - mutableStateOf은 다음과 같이 선언할 수 있다.
해당 코드는 전부 똑같이 동작하며, 공식 문서는 읽기 쉬운 걸로 골라 사용하라고 한다.
val mutableState = remember { mutableStateOf(default) }
var value by remember { mutableStateOf(default) }
val (value, setValue) = remember { mutableStateOf(default) }
출처:
- https://developer.android.com/develop/ui/compose/state
- https://stackoverflow.com/questions/71529740/why-do-we-use-val-instead-of-var-for-remembering-mutable-state-in-jetpack-compos
- https://stackoverflow.com/questions/66169601/what-is-the-difference-between-remember-and-mutablestate-in-android-jetpack
- https://developer.android.com/develop/ui/compose/lifecycle#:~:text=As%20mentioned%20in%20the%20Managing%20state%20documentation%2C,of%20the%20composables%20that%20describe%20your%20UI.