: ์ฝ๋๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ํธ๋ฆฌ๋ก ํด์ํ๋ ๊ณผ์
: data๊ฐ ๋ฐ๋์ด์ ํธ๋ฆฌ๋ฅผ ์๋ก ๊ทธ๋ ค์ผ ํ๋ ๊ฒฝ์ฐ
ex) ์ธ์ name์ด ๋ฐ๋๋ฉด ์๋ก Recomposition์ด ๋์ด์ผ ํจ
ํ์ง๋ง ์ด๋ฌํ Recomposition ๊ณผ์ ์ ๋น์ฉ์ด ํฌ๊ธฐ ๋๋ฌธ์ ํ์ํ ๊ฒ๋ง ์๋ก ๊ทธ๋ ค์ผ ํ๋ค.
๐Idempotent : Data๊ฐ ๊ฐ์ผ๋ฉด ๊ฒฐ๊ณผ๊ฐ ๊ฐ๋๋ก ์์ฑํด์ผ ํ๋ค.
๐ก์ ์ธํ UI๋ฅผ ๊ฐ๋ฐํ ๋๋ Recomposition์ ๊ณ ๋ คํด์ผ ํ๋ค.
data๊ฐ ๋ฐ๋๋ฉด Recomposition์ ํ๋๋ฐ ๋ชจ๋ Data๋ฅผ ๋ค ๊ฐ์งํ ์ ์๋ ๊ฑด ์๋๋ค.
Compose๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํจ์์ ์ธ์๋ง์ ๊ด์ฐฐํ ์ ์๋ค.
๊ด์ฐฐ ๋์์ ๋ณ์๋ฅผ ์ถ๊ฐํ๊ธฐ ์ํด์๋ remember ํจ์์ mutableState ํ์ ์ ์ฌ์ฉํด์ผ ํ๋ค.
์์ ๊ฒฝ์ฐ์๋ Recomposition ์์ ์ ์๋ก ํจ์๊ฐ ์คํ๋์ด๋ ํญ์ 0์ผ๋ก ์ฌ์ค์ ๋๋ค.
์ฆ, ๋ก์ปฌ ๋ณ์๋ ์ํ ์ ์ง๊ฐ ์ ๋๋ค.
remember { mutableStateOf(data) }
: remember ํจ์์ mutableState ํ์
์ ์ฌ์ฉ
๐ ๋ก์ปฌ ๋ณ์์ ๊ฐ์ ์ ์ฅํ์ง ์๊ณ ์์คํ
์บ์์ ๊ฐ์ ์ ์ฅ
Recomposition์ด ๋์ด์ ํจ์๊ฐ ์๋ก ๋ถ๋ ธ์ ๋ ์ธ๋ถ์ ์ ์ญ ์บ์์์ ๊ทธ ๊ฐ์ ๊ฐ์ ธ์ค๊ณ
์บ์๊ฐ ์์ผ๋ฉด ์ด๊ธฐ๊ฐ์ผ๋ก ์ค์ ์ ํจ
์ผ์ชฝ์ ๋ก์ปฌ ๋ณ์์ ๊ฐ์ ์ ์ฅํจ. ์ค๋ฅธ์ชฝ์ remember(์์คํ
์บ์)์ ๊ฐ์ ์ ์ฅํจ.
MutableState ํ์
์ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ฃผ๋ ์์ฑ ํจ์
State : Observer ํจํด์์ ์ด๋ค ์ด๋ฒคํธ๋ ๊ด์ฐฐ์๊ฐ ๋ฐ๋์์ ๋ observerํํ
notify๋ฅผ ํด์ฃผ๋๋ฐ state๊ฐ ๊ทธ๋ฐ ์ญํ ์ ํจ
state๋ผ๋ ๊ด์ฐฐ ๋์์ด ์์ ๋ state๊ฐ ๋ฐ๋๋ฉด ๊ด์ฐฐํ๊ณ ์๋ค๊ฐ ๋ทฐ๊ฐ ๋ฐ๋๋ Flow.
๊ด์ฐฐ ๋์์ด ๊ฐ๊ณ ์๋ ๊ฐ์ด value.
State๋ฅผ ์์๋ฐ๋ ๊ฒ๋ค์ MutableStateOf ๋ง๊ณ ๋ flow, rxjava, livedata ๋ฑ์ด ์๋๋ฐ ๋ชจ๋ ๊ฐ์ ๊ด์ฐฐํ ๋ State ํํ๋ก ๊ด๋ฆฌ๋๋ค.
remember : Composeํํ
"์บ์ ํด ์ค!"๋ผ๊ณ ํ๋ ์ญํ . ๊ทธ๋ฅ ์บ์ฑํจ์๋ผ๊ณ ์๊ฐํ์.
๐ stroe์ restoreํ๋ ์ถ๊ฐ ์์ ์ ํด์ฃผ๋ rememberSaveable์ ์ฌ์ฉํ์
Configuration Change๋ก Activity๊ฐ ์ฌ์์ฑ๋์ด๋ ์ํ๋ฅผ ๊ธฐ์ตํ๋๋ก State๋ฅผ ์บ์ฑํ๋ ํจ์
val count = remember { mutableStatOf(0) }
์์ ์ฝ๋๋ฅผ ์๋์ฒ๋ผ ์ฐ๋ฉด ๋๋ค.
var count by remember { mutableStatOf(0) }
property์ getter์ setter๋ฅผ ์์ํ๋ ๊ฒ.
value๋ฅผ ๋ช
์ํ์ง ์์๋ ์๋์ผ๋ก ๋ถ๋ฌ์ค
1. ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํด count์ ์ํ๊ฐ ๋ฐ๋
2. count์ ๊ฐ์ด ๋ฐ๋๋ฉด Compose์๊ฒ ์ํ๊ฐ ๋ฐ๋์๋ค๊ณ ์๋ฆผ์ด ๊ฐ๊ณ Recomposition์ด ์ผ์ด๋จ
3. recomposition์ด ์ผ์ด๋๋ฉด ๋ณ๊ฒฝ๋ ๊ฐ์ ์ฐธ์กฐํ๋ ๋ถ๋ถ์ ์ฐพ์ ๋ค์ ๊ทธ๋ฆผ
์์ฝ
๋ฐ๋์์ ๋ ๋ทฐ๋ฅผ ์๋ก ๊ทธ๋ ค์ผ๋๋ ๊ด๊ณ๋ฅผ state๋ก ์ ์ํ๊ณ state ๊ฐ์ ๋ฐ๊พธ๋ฉด Compose๋ ์ง์ผ๋ณด๊ณ ์๋ค๊ฐ ์ฐธ์กฐํ๊ณ ์๋ ๊ฑธ ๋ฐ๊พธ๋ ํํ๋ก Recomposition์ด ์ผ์ด๋จ
Stateful ํจ์ : ์ปดํฌ์ ๋ธ ํจ์ ๋ด์ ์ํ๊ฐ ์์
Stateful ํจ์๋ ์ฌ์ฌ์ฉ์ฑ์ด ๋จ์ด์ง๊ณ ํ ์คํธ๊ฐ ์ด๋ ค์
๋ด๋ถ์ ์๋ ๊ฐ(count)๊ณผ ์ด๋ฒคํธ(onClick)๋ฅผ ์ธ๋ถ๋ก ์ถ์ถ
์ฌ์ฌ์ฉ์ฑ์ ์ํด์ ํจ์๋ฅผ Statelessํ ์ํฌ ๋ ์ฌ์ฉํ๋ ๊ธฐ๋ฒ