[Android] Compose(MutableState)

์ •์ƒ์ค€ยท2023๋…„ 1์›” 16์ผ
0
post-thumbnail

๐Ÿ“ ์šฉ์–ด์„ค๋ช…

  • ์ปดํฌ์ง€์…˜ : Compose๊ฐ€ ์ปดํฌ์ €๋ธ”์„ ์‹คํ–‰ํ•  ๋•Œ ๋นŒ๋“œํ•œ UI์— ๊ด€ํ•œ ์„ค๋ช…์ด๋‹ค.
  • Compose : ์„ ์–ธํ˜• UI ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, UI์˜ ๋ชจ์Šต์„ ์ฝ”๋“œ๋กœ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • ์ปดํฌ์ €๋ธ” : ํ…์ŠคํŠธ, ๊ณต๋ฐฑ, ํ…์ŠคํŠธ ์ƒ์ž๋“ฑ๊ณผ ํ•จ๊ป˜ UI๋ฅผ ์„ค๋ช…ํ•ด ์ค€๋‹ค.
  • ๋ฆฌ์ปดํฌ์ง€์…˜ : ์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ๊ณผ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•  ๋•Œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋‹ค์‹œ ์‹คํ–‰ํ•จ.

๐Ÿ“ ๋กœ์ง

Compose๋Š” ์ดˆ๊ธฐ ์ปดํฌ์ง€์…˜ ์‹œ ์ฒ˜์Œ์œผ๋กœ ์ปดํฌ์ €๋ธ”์„ ์‹คํ–‰ํ•  ๋•Œ ์ปดํฌ์ง€์…˜์—์„œ UI๋ฅผ ๊ธฐ์ˆ ํ•˜๊ธฐ ์œ„ํ•ด ํ˜ธ์ถœํ•˜๋Š” ์ปดํฌ์ €๋ธ”์„ ์ถ”์ ํ•œ๋‹ค. ๋ฆฌ์ปดํฌ์ง€์…˜์€ Compose๊ฐ€ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋Š” ์ปดํฌ์ €๋ธ”์„ ๋‹ค์‹œ ์‹คํ–‰ํ•œ ๋‹ค์Œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•˜๋„๋ก ์ปดํฌ์ง€์…˜์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
์ปดํฌ์ง€์…˜์€ ์ดˆ๊ธฐ ์ปดํฌ์ง€์…˜์„ ํ†ตํ•ด์„œ๋งŒ ์ƒ์„ฑ๋˜๊ณ  ๋ฆฌ์ปดํฌ์ง€์…˜์„ ํ†ตํ•ด์„œ๋งŒ ์—…๋ฐ์ดํŠธ๋  ์ˆ˜ ์žˆ๋‹ค.
์ด๋ ‡๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„  Compose๊ฐ€ ์ถ”์ ํ•  ๋Œ€์ƒ์„ ์•Œ์•„์•ผ ํ•œ๋‹ค.

Compose์—์„œ State ๋ฐ MutableState ์œ ํ˜•์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ฑ์˜ ์ƒํƒœ๋ฅผ Compose์—์„œ ๊ด€์ฐฐ ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ ์ถ”์  ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • State ๋Š” ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€
  • MutableState ๋Š” ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ

mutableStateOf ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ด€์ฐฐ ๊ฐ€๋Šฅํ•œ MutableState๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ์ดˆ๊นƒ๊ฐ’์„ State ๊ฐ์ฒด์— ๋ž˜ํ•‘๋œ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ˆ˜์‹ ํ•œ ๋‹ค์Œ, value์˜ ๊ฐ’์„ ๊ด€์ฐฐ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋กœ ๋งŒ๋“ ๋‹ค.

mutableStateOf() ํ•จ์ˆ˜์—์„œ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์„ฑ์„ ์ง€๋‹Œ๋‹ค.

  • ์ƒํƒœ(์˜ˆ: ์„œ๋น„์Šค ๋น„์šฉ)๋ฅผ ๋ณด์œ ํ•ฉ๋‹ˆ๋‹ค
  • ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ด€์ฐฐ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ, Compose๋Š” ๊ฐ’์˜ ๋ณ€๊ฒฝ์„ ๊ด€์ฐฐํ•˜๊ณ  ๋ฆฌ์ปดํฌ์ง€์…˜์„ ํŠธ๋ฆฌ๊ฑฐํ•˜์—ฌ UI๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

๊ทผ๋ฐ ๋งŒ์•ฝ ๋ฆฌ์ปดํฌ์ง€์…˜์ด ๋˜์–ด ์ปดํฌ์ €๋ธ” ํ•จ์ˆ˜๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์ปดํฌ์ €๋ธ”์˜ ์ถ”์ ์„ ๋ฐ›๋Š” ๊ฐ’์ด ๋‹ค์‹œ ์ดˆ๊ธฐํ™” ๋˜์–ด ์ดˆ๊ธฐ ์ปดํฌ์ง€์…˜๊ณผ ๋‹ฌ๋ผ์ง€์ง€ ์•Š๋Š”๋‹ค.
์ด๋Ÿด ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด remeber ์ปดํฌ์ €๋ธ”์ด๋‹ค.

๐Ÿ“ ์ฝ”๋“œ์„ค๋ช…

var amountInput by remember{mutableStateOf("")}

amountImput์€ Compose์—๊ฒŒ ์ถ”์ ์„ ๋ฐ›๋‹ค ๋ณ€๊ฒฝ๋œ๋‹ค๋ฉด ๋ฆฌ์ปดํฌ์ง€์…˜ ๋  ๊ฒƒ์ด๋‹ค. by๋Š” delegate์™€ ๊ด€๋ จ์ด ์žˆ๋Š”๋ฐ ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด ๊ธฐ๋ณธ getter์™€ setter๋ฅผ remember์—๊ฒŒ ์œ„์ž„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ๋œ๋‹ค๋ฉด ๋ฆฌ์ปดํฌ์ง€์…˜์ด ๋˜์–ด ์ปดํฌ์ ธ๋ธ”ํ•จ์ˆ˜๊ฐ€ ๋‹ค์‹œ ์‹คํ–‰๋  ๋•Œ remember๊ฐ€ ๋ณ€๊ฒฝ๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•ด๋‘ฌ amountInput์€ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š๊ณ  ๊ทธ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. remember์€ ๋žŒ๋‹ค๋กœ ๋˜๋Š”๋ฐ mutableStaOf๋Š” ์•ž์„œ ์„ค๋ช…ํ–ˆ๋“ฏ์ด ๊ด€์ฐฐ ๊ฐ€๋Šฅํ•œ MutableState๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ๋ฉฐ ์ธ์ˆ˜๋กœ๋Š” ์ดˆ๊ธฐ๊ฐ’์ด ๋“ค์–ด๊ฐ„๋‹ค.

profile
์•ˆ๋“œ๋กœ์ด๋“œ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€