๐Ÿ“ŒJetpack Compose ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ๊ฐœ๋ฐœ์—์„œ State Hoisting

LoyalFlowerยท2025๋…„ 3์›” 1์ผ

State Hoisting์€ Jetpack Compose์—์„œ ์ƒํƒœ๋ฅผ ์ปดํฌ์ €๋ธ” ํ•จ์ˆ˜ ์™ธ๋ถ€๋กœ ๋Œ์–ด๋‚ด์–ด ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, UI์™€ ์ƒํƒœ๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ๋” ์œ ์—ฐํ•˜๊ณ  ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปดํฌ์ €๋ธ”์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•


  • Jetpack Compose์—์„œ๋Š” UI ์š”์†Œ๊ฐ€ ์ƒํƒœ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ Œ๋”๋ง๋จ
  • State Hoisting์€ ์ด ์ƒํƒœ๋ฅผ ์ปดํฌ์ €๋ธ” ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์™ธ๋ถ€๋กœ "๋Œ์–ด๋‚ด๋Š”" ๊ธฐ๋ฒ•์„ ์˜๋ฏธ
  • ๊ธฐ๋ณธ์ ์œผ๋กœ Compose๋Š” ์ปดํฌ์ €๋ธ” ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ remember์™€ mutableStateOf๋ฅผ ์‚ฌ์šฉํ•ด ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜์ง€๋งŒ, ์ด ์ƒํƒœ๋ฅผ ์™ธ๋ถ€์—์„œ ๊ด€๋ฆฌํ•˜๊ณ  ์ด๋ฅผ ์ปดํฌ์ €๋ธ” ํ•จ์ˆ˜๋กœ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์ด ๋ฐ”๋กœ State Hoisting

State Hoisting์„ ์‚ฌ์šฉํ•˜๋ฉด UI์™€ ์ƒํƒœ ๊ด€๋ฆฌ๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด, ๋” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์‰ฌ์šด ์ปดํฌ์ €๋ธ”์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค

๊ฐ„๋‹จ ์˜ˆ์‹œ

@Composable
fun MyTextField(value: String, onValueChange: (String) -> Unit) {
    TextField(
        value = value,
        onValueChange = onValueChange
    )
}

์œ„ ์ฝ”๋“œ์—์„œ value์™€ onValueChange๋Š” MyTextField ํ•จ์ˆ˜ ์™ธ๋ถ€์—์„œ ๊ด€๋ฆฌ๋˜๋ฉฐ, ์ƒํƒœ๋ฅผ ์™ธ๋ถ€์—์„œ ์ „๋‹ฌ๋ฐ›๊ณ  ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด UI์™€ ์ƒํƒœ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

profile
๋А๋‚€ ์ ์„ ์ ์–ด๋‚˜๊ฐ€๋ฉฐ ์„ฑ์žฅํ•˜๋Š” ๋ธ”๋กœ๊ทธ

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