remember๋ก๋ ์ ๋๋ ๊ฒฝ์ฐ - rememberSaveable
remember๋ก๋ ์ ๋๋ ๊ฒฝ์ฐ - rememberSaveable
์ง๋ ๊ธ์์ remember๋ก State๋ฅผ ์ ์งํ๋ ๋ฒ์ ๋ดค๋ค.
๊ทผ๋ฐ ์ด remember, ์ฌ์ค ํ๊ณ๊ฐ ์๋ค.
์ง๋๋ฒ GroupCard ์ฝ๋๋ฅผ ๊ทธ๋๋ก ์จ๋ณด์.
kotlin
@Composable
fun GroupCard(
group: Group,
onClick: () -> Unit
) {
var isSelected by remember { mutableStateOf(false) }
Card(
onClick = {
isSelected = true
onClick()
},
border = if (isSelected) BorderStroke(2.dp, Color.Blue) else null
) {
// ...
}
}์นด๋๋ฅผ ๋๋ฌ์ ์ ํ๋ ์ํ๋ก ๋ง๋ค์ด๋๊ณ , ํฐ์ ์์ผ๋ก ๋๋ ค์ ํ๋ฉด์ ํ์ ์์ผ๋ณด์.
์ ํํ๋ ๊ฒ ํ๋ ค๋ฒ๋ฆฐ๋ค.
์ ์ด๋ฐ ์ผ์ด ์๊ธธ๊น?
ํ๋ฉด ํ์ ์ ๊ทธ๋ฅ ๋ฆฌ์ปดํฌ์ง์ ์ด ์๋๋ค
์ง๊ธ๊น์ง ๋งํ ๋ฆฌ์ปดํฌ์ง์ ์ "State ๊ฐ์ด ๋ฐ๋์ด์ ํจ์๊ฐ ๋ค์ ์คํ๋๋ ๊ฒ"์ด์๋ค. ์ด๊ฑด ์กํฐ๋นํฐ๋ ๊ทธ๋๋ก ์ด์์๊ณ , ๊ทธ ์์์ ์ปดํผ์ ๋ธ ํจ์๋ง ๋ค์ ๊ทธ๋ ค์ง๋ ๊ฑฐ๋ค.
๊ทผ๋ฐ ํ๋ฉด ํ์ ์ ๋ค๋ฅด๋ค. ์๋๋ก์ด๋ ๊ธฐ๋ณธ ๋์ ์์ฒด๊ฐ, ํ๋ฉด ๋ฐฉํฅ์ด ๋ฐ๋๋ฉด ์กํฐ๋นํฐ๋ฅผ ํต์งธ๋ก ํ๊ดดํ๊ณ ์๋ก ๋ง๋ ๋ค. (๋ฆฌ์์ค๋ฅผ ์ ์ค์ ์ ๋ง๊ฒ ๋ค์ ๋ถ๋ฌ์ค๊ธฐ ์ํด์๋ค.)
์กํฐ๋นํฐ๊ฐ ํต์งธ๋ก ์๋ก ๋ง๋ค์ด์ง๋ค๋ ๊ฑด, ๊ทธ ์์ ์๋ remember๊ฐ ๋ถ์ก๊ณ ์๋ ๋ฉ๋ชจ๋ฆฌ๋ ๊ฐ์ด ๋ ์๊ฐ๋ค๋ ๋ป์ด๋ค. remember๋ "์ด ์ปดํผ์ ๋ธ์ด ํ๋ฉด์ ๋ ์๋ ๋์"๋ง ๊ฐ์ ์ง์ผ์ค๋ค๊ณ ํ๋๋ฐ, ํ๋ฉด ํ์ ์ ๊ทธ "๋ ์๋ ์ปดํผ์ ๋ธ" ์์ฒด๋ฅผ ์์ ๊ณ ์๋ก ๋ง๋๋ ๊ฑฐ๋ผ์ remember๊ฐ ์ ์ธ ๋ฐฉ๋ฒ์ด ์๋ค.
๊ทธ๋ผ ์ด๋ป๊ฒ ๋ฒํ จ์ผ ํ ๊น?
kotlin
var isSelected by rememberSaveable { mutableStateOf(false) }remember๋ฅผ rememberSaveable๋ก ๋ฐ๊พธ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
rememberSaveable์ ๊ฐ์ ๊ทธ๋ฅ ๋ฉ๋ชจ๋ฆฌ์๋ง ๋๋ ๊ฒ ์๋๋ผ, ์กํฐ๋นํฐ๊ฐ ํ๊ดด๋๊ธฐ ์ง์ ์ ๊ทธ ๊ฐ์ Bundle์ด๋ผ๋ ๊ณณ์ ์ ๊น ์ ์ฅํด๋๋ค๊ฐ, ์กํฐ๋นํฐ๊ฐ ๋ค์ ๋ง๋ค์ด์ง ๋ ๊ทธ Bundle์์ ๊ฐ์ ๊บผ๋ด์ ๋ณต์ํด์ค๋ค.
๊ทธ๋์ ํ๋ฉด์ ํ์ ํด๋, ์ฑ์ ์ต๊ทผ์ฑ ๋ชฉ๋ก์์ ๋ด๋ ธ๋ค๊ฐ ๋ค์ ๋ค์ด์๋(์์ ํ ์ข ๋ฃ๋ ๊ฒ ์๋๋ผ๋ฉด), ์ ํ ์ํ๊ฐ ๊ทธ๋๋ก ์ ์ง๋๋ค.
๊ทธ๋ผ ์ธ์ remember, ์ธ์ rememberSaveable?
- ๋ฆฌ์คํธ ์คํฌ๋กค ์์น, ์ ๋๋ฉ์ด์
์งํ ์ํ์ฒ๋ผ ํ์ ์ข ํ๋ ค๋ ํฌ๊ฒ ์๊ด์๋ ๊ฐ โ
remember๋ก ์ถฉ๋ถ - ์ฌ์ฉ์๊ฐ ์
๋ ฅํ ๊ฐ, ์ ํํ ์ต์
์ฒ๋ผ ํ๋ฉด ํ์ ํ๋ค๊ณ ๋ ์๊ฐ๋ฉด ์ฌ์ฉ์๊ฐ ์ง์ฆ๋ ๊ฐ โ
rememberSaveable
๊ทผ๋ฐ ์ด๊ฒ๋ ํ๊ณ๋ ์๋ค
rememberSaveable์ ํ๋ฉด ํ์ ์ด๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ง์
์ ๋๋ ๋ฒํ
จ์ฃผ์ง๋ง, ์ฑ์ ์์ ํ ์ข
๋ฃํ๋ค๊ฐ ๋ค์ ์ผ๋ฉด ์ญ์ ์ฌ๋ผ์ง๋ค. Bundle๋ ๊ฒฐ๊ตญ ํ๋ก์ธ์ค๊ฐ ์ด์์๋ ๋์๋ง ์๋ฏธ ์๋ ์์ ์ ์ฅ์์ด๊ธฐ ๋๋ฌธ์ด๋ค.
์ง์ง๋ก ์ฑ์ ๊ป๋ค ์ผ๋ ๋จ์์๊ฒ ํ๋ ค๋ฉด ๋ก์ปฌ DB(Room)๋ DataStore, ์๋ฒ ์ ์ฅ์ด ํ์ํ๋ค๋ ๊ฑด ์ฌ์ ํ ์ ํจํ๋ค.
