remember
์ mutableStateOf
์๋ฒฝ ์ดํดํ๊ธฐJetpack Compose๋ ์ํ(State)๋ฅผ ์ค์ฌ์ผ๋ก ๋์ํ๋ ์ ์ธํ UI ์์คํ
์
๋๋ค. ์ด ๊ตฌ์กฐ์์ remember
์ mutableStateOf
๋ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ํต์ฌ ๋๊ตฌ๋ก, Compose์ ์๋ ์๋ฆฌ๋ฅผ ์ดํดํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ด ๊ธ์์๋ ๋ ๊ฐ๋
์ด ๊ฐ๊ฐ ์ด๋ค ์ญํ ์ ํ๊ณ , ํจ๊ป ์ด๋ป๊ฒ ๋์ํ๋์ง๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.
remember
๋?remember
๋ Composable ํจ์๊ฐ ์ฌ๊ตฌ์ฑ(Recomposition) ๋ ๋, ์ด์ ๊ฐ์ ๊ธฐ์ตํด์ ์ ์งํด์ฃผ๋ ๊ธฐ๋ฅ์ ๋ด๋นํฉ๋๋ค.
Jetpack Compose์์๋ ์ํ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๊ด๋ จ Composable ํจ์๊ฐ ๋ค์ ์คํ๋๋๋ฐ, ์ด ๊ณผ์ ์์ ๊ฐ์ด ์ด๊ธฐํ๋์ง ์๋๋ก ํ๋ ค๋ฉด remember
๊ฐ ํ์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด ์๋ ์ฝ๋๋ฅผ ๋ณด๊ฒ ์ต๋๋ค:
val count = remember { mutableStateOf(0) }
mutableStateOf(0)
๋ ์ํ๋ฅผ ๋ณด๊ดํ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค. remember { ... }
๋ ์ด ๊ฐ์ฒด๋ฅผ ์ปดํฌ์ง์
์ฌ์ด์์๋ ์ ์ง์ํต๋๋ค.์ฆ, ์ํ๊ฐ ๋ฐ๋๋๋ผ๋ ์ปดํฌ์ง์ ์ด ๋ค์ ์ผ์ด๋ ๋ ๊ฐ์ด ์ ์ง๋๋๋ก ๋์์ฃผ๋ ์ญํ ์ ํฉ๋๋ค.
mutableStateOf
๋?mutableStateOf
๋ Compose์์ ์ํ ๋ณํ๋ฅผ ๊ฐ์งํ ์ ์๋๋ก ๋ง๋ค์ด์ฃผ๋ ํจ์์
๋๋ค.
ํด๋น ๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด ์ด๋ฅผ ์ฐธ์กฐํ๊ณ ์๋ Composable ํจ์๊ฐ ์๋์ผ๋ก recomposition(์ฌ์ปดํฌ์ง์
) ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด:
val count = mutableStateOf(0)
count.value = 1
์ด ๊ฒฝ์ฐ count.value
์ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด, ์ด๋ฅผ ์ฐธ์กฐํ๋ Composable ํจ์๊ฐ ์๋์ผ๋ก ๋ค์ ์คํ๋ฉ๋๋ค.
์ด๋ฌํ ์๋ ๋ฐ์ํ ๊ตฌ์กฐ ๋๋ถ์ Compose๋ ๋งค์ฐ ์ ์ธ์ ์ด๊ณ ๊ฐ๊ฒฐํ UI ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
val count = remember { mutableStateOf(0) }
์ ์ฝ๋๋ Compose์์ ์ํ๋ฅผ ๋ค๋ฃฐ ๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ํจํด์ ๋๋ค.
mutableStateOf
๋ ๊ฐ์ ๋ณํ๋ฅผ ๊ฐ์งํ ์ ์๋๋ก ํ๊ณ , remember
๋ ์ด ์ํ ๊ฐ์ฒด๋ฅผ ์ฌ๊ตฌ์ฑ ์์๋ ์ ์งํด์ค๋๋ค.๊ฒฐ๊ณผ์ ์ผ๋ก ์ด ์กฐํฉ์ ์ฌ์ฉํ๋ฉด ๊ฐ์ด ๋ณ๊ฒฝ๋ ๋ ํ๋ฉด์ด ์๋์ผ๋ก ๊ฐฑ์ ๋๋ฉฐ, ์ฌ์ปดํฌ์ง์ ์ด ์ผ์ด๋๋ ์ํ๋ ์ด๊ธฐํ๋์ง ์์ต๋๋ค.
@Composable
fun Counter() {
val count = remember { mutableStateOf(0) }
Column {
Text("Count: ${count.value}")
Button(onClick = { count.value++ }) {
Text("Increase")
}
}
}
count
๋ 0์ผ๋ก ์ด๊ธฐํ๋ฉ๋๋ค. count.value++
๋ก ๊ฐ์ด ์ฆ๊ฐํฉ๋๋ค. remember
๋๋ถ์ count
๋ ์ปดํฌ์ง์
์ด ๋ค์ ์ผ์ด๋๋ ์ด๊ธฐํ๋์ง ์๊ณ ๊ธฐ์กด ๊ฐ์ ์ ์งํฉ๋๋ค.remember
์์ด ์ฌ์ฉํ ๊ฒฝ์ฐval count = mutableStateOf(0) // remember ์์
์ด๋ ๊ฒ ์์ฑํ ๊ฒฝ์ฐ, Composable ํจ์๊ฐ ์ฌ๊ตฌ์ฑ๋ ๋๋ง๋ค count
๊ฐ ๋ค์ 0์ผ๋ก ์ด๊ธฐํ๋ฉ๋๋ค.
์ฆ, ๋ฒํผ์ ๋๋ฌ๋ ํ๋ฉด์ ํ์๋๋ ๊ฐ์ ์ฆ๊ฐํ์ง ์๊ณ ํญ์ 0์ผ๋ก ๋์๊ฐ๊ฒ ๋ฉ๋๋ค.
mutableStateOf
๋ ์ํ๋ฅผ ์ ์ธํ๊ณ , ๊ทธ ๊ฐ์ด ๋ฐ๋์์ ๋ Compose๊ฐ ์๋์ผ๋ก ๋ฐ์ํ๊ฒ ๋ง๋ญ๋๋ค. remember
๋ ์ด ์ํ๋ฅผ ์ปดํฌ์ง์
๊ฐ์ ์ ์ง์์ผ์ฃผ๋ ๋๊ตฌ์
๋๋ค.์ด ๋ ๊ฐ์ง๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ ํจํด์ Compose์์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ด๋ฉด์๋ ์ค์ํ ์ํ ๊ด๋ฆฌ ๋ฐฉ๋ฒ์
๋๋ค.
Jetpack Compose๋ฅผ ์ฒ์ ์ ํ๊ฑฐ๋ ์ํ ๊ธฐ๋ฐ UI ํ๋ฆ์ ๋ช
ํํ ์ดํดํ๊ณ ์ถ๋ค๋ฉด, ์ด ์กฐํฉ์ ๋์ ์๋ฆฌ๋ฅผ ๊ผญ ์์งํ์๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ ๊น์ ์ํ ๊ด๋ฆฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ์๋ rememberSaveable
, ViewModel
, StateFlow
๋ฑ๊ณผ ํจ๊ป ํ์ฉํ๋ ๋ฐฉ๋ฒ๋ ์์ต๋๋ค. ์ดํ ๊ฒ์๊ธ์์ ๋ค๋ค๋ณด๊ฒ ์ต๋๋ค.