๋ฒ์จ ๋์จ ์ง 16๋ ์ด๋ ๋๋์.
์ปดํฌ์ฆ์์ ๊ฐ์ฅ ์ค์ํ๋ค๊ณ ๋ณผ ์ ์๋ ๊ฐ๋ ์ ๋ฐ๋ก ์ํ ์ ๋๋ค.
์ค๋์ ๊ทธ ์ํ์ ์ํ ํธ์ด์คํ ์ ๋ํด ๊ณต๋ถํ์ต๋๋ค.
๋จผ์ , ์ํ(State)๋ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ณํ๋ ๊ฐ์ ๋๋ค.
์ฌ๋์ ์ํ์๋ ๋น์ทํ ๊ฐ๋ ์ด๋ผ๊ณ ๋ณด๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ปดํฌ์ฆ๋ ์ฌ๋์ฒ๋ผ ์ํ๋ฅผ ๊ฐ๊ณ , ์ด ์ํ์ ๋ณํ์ ๋ฐ๋ผ ์์ง์ด๋ ํํ๋ฅผ ๊ฐ๊ณ ์์ต๋๋ค.
์ปดํฌ์ฆ์ ํน์ ์ํ๊ฐ ๋ฐ๋๋ฉด ๊ทธ ์ํ๊ฐ ํฌํจ๋ ํจ์์ ์ํฅ์ ๋ฐ๋ ํจ์๋ค์ ์ฌ๊ตฌ์ฑํฉ๋๋ค.
์ฌ๊ธฐ์ ์ฌ๊ตฌ์ฑ(Recomposition)์ด๋, ๋ฐ๋ ์ํ๋ฅผ ๊ฐ์ง๊ณ UI๋ฅผ ๋ค์ ๊ทธ๋ฆฐ๋ค๋ ์๋ฏธ์ ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ํ๋ ์ด์ ์ ๊ฐ์ ๊ธฐ์ตํ๊ณ ์์ด์ผ ํฉ๋๋ค.
๊ทธ๋์ ์ํ๋ฅผ ์ฌ์ฉํ ๋, ์ฃผ๋ก ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํฉ๋๋ค.
var state by remember { mutableStateOf() }
remember๋ฅผ ์์ํ์ฌ ์ํ๋ฅผ ๊ธฐ์ตํ๊ณ , ์ํ๊ฐ ๋ณํํ๋ฉด, ์ด๋ฅผ ๊ฐ์งํด UI๋ฅผ ์ฌ๊ตฌ์ฑํฉ๋๋ค.
๊ทธ๋ผ ์ํ ํธ์ด์คํ ์ด๋ ๋ฌด์์ผ๊น์?
ํธ์ด์คํ (Hoisting)์ ์์ด๋ก "๋ค์ด์ฌ๋ฆฌ๋ค" ๋ผ๋ ๋ป์ ๋๋ค.
์ฆ, ์ํ ํธ์ด์คํ ์ ์ํ๋ฅผ ๋ค์ด์ฌ๋ฆฌ๋ ๊ฒ์ด ๋๊ฒ ์ต๋๋ค.
์ํ๋ฅผ ๋ค์ด์ฌ๋ฆฐ๋ค? ์์ํ ์ ์์ต๋๋ค. ์ด๋, ์ปดํฌ์ฆ์ ๊ตฌ์ฑ ๋ฐฉ์์ ์์๋ณด๋ฉด ๋ฉ๋๋ค.
์ปดํฌ์ฆ๋ ์ปดํฌ์ ๋ธ ํจ์๋ฅผ ํธ์ถํ๊ณ , ํธ์ถํ๊ณ , ๋ ํธ์ถํ์ฌ ๋ง๋ญ๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก, ๋ค์ด์ฌ๋ฆฌ๋ ๊ฑด, ์ปดํฌ์ ๋ธ ํจ์๋ฅผ ํธ์ถํ ํธ์ถ์๋ก ์ํ๋ฅผ ์ฎ๊ธด๋ค๋ ๋ป์ด ๋ฉ๋๋ค.
๋์ , ์ฎ๊ธฐ๊ณ ๋ ํ, ๊ธฐ์กด์ ์๋ ๊ณณ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ค์ ์ํ๋ฅผ ๊ฐ์ด ๊ด๋ฆฌํ ์ ์๋๋ก ํฉ๋๋ค.
์ด๋ฅผ ํตํด, ๋ค๋ฅธ ์ปดํฌ์ ๋ธ ํจ์์ ์ํ๋ฅผ ๊ณต์ ํ ์ ์๊ณ , ์ํ๋ฅผ ์บก์ํํ ์ ์๋ค๋ ์ฅ์ ์ด ์๊น๋๋ค.
์ด ๋ฐฉ๋ฒ์ ์ ์ฉํ๋ฉด, ์ํ๋ ์๋๋ก ํฅํ๊ณ ์ด๋ฒคํธ๋ ์๋ก ํฅํ๋, ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ด ์์ฑ๋ฉ๋๋ค.
์์ฆ ์ฝ๋ ์นดํ๋ฅผ ์กฐ๊ธ์ฉ ์งํํ๊ณ ์์ด์ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
๋๋ฆ ๊ณผ์ ๋ ์ํํ๊ฒ ์ ์งํํ๋ ๊ฒ ๊ฐ๊ณ ,
์ด์ ์ฝ๋ฃจํด์ ๋ ๊ณต๋ถํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
๋ด์ผ ์ฝ๋ฃจํด ๊ฐ์ ๋ฃ๊ณ ์ค๊ฒ ์ต๋๋ค.
๋.