Statless ์์ ฏ์ ๊ฒฝ์ฐ
Stateless ์์ ฏ์ ๊ฒฝ์ฐ ์์ ๊ฐ์ด ๊ฐ์ ํ์ ์ด๋ผ๋ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ก ์ธ์ํ์ง๋ง ์ด๋ฌํ ์์ ฏํธ๋ฆฌ๋ฅผ ์ ๋ง๋ก ๊ทธ๋ฆฌ๋ Element Tree ์์๋ ๊ฐ์ ํ์ ์ ๋ชจ๋ ๋๊ฐ์ด ์ธ์ํด๋ฒ๋ฆฐ๋ค. ๋ง์ฝ ์์ ฏํธ๋ฆฌ์์ Red์ Blue์ context๋ฅผ ๋ฐ๊พธ๋๋ผ๋ ๋์ ๊ฐ์ ํ์ ์ด๊ธฐ ๋๋ฌธ์ Element Tree๋ ์ด๋ฅผ ์ ํ ์ ์ ์๋ค.
Stateful ์์ ฏ์ ๊ฒฝ์ฐ
Stateful ์์ ฏ์ ๊ฒฝ์ฐ State๋ ์์ ฏ์ด ๊ฐ์ง๊ณ ์๋ ๊ฒ์ด ์๋ Element Tree๊ฐ ์์ ํ๊ณ ์๋ค. ๋ง์ฝ ์์ ฏํธ๋ฆฌ์์ Red, Blue ๊ฐ ๋ฐ๋๋ค๋ฉด Element Tree ์์๋ Red WidgetTree์ Blue State๋ฅผ ๋ฃ๊ฒ ๋๋ค.
์ด๋ ๊ฒ ๊ฐ์ ํ์ ์ด์ฌ๋ Element Tree์์ ๋ค๋ฅธ ์์ ฏ์ผ๋ก ์ธ์ํ ์ ์๋ ๋ฐฉ๋ฒ์ผ๋ก๋ Widget Tree์๊ฒ ๋ค๋ฅธ Key๊ฐ์ ๋ถ์ฌํด์ค์ผ๋ก์จ ํด๊ฒฐํ ์ ์๋ค. Element Tree ๋ Context ๊ฐ ๋ฐ๋์ด๋ ์๋ง์ ํค๊ฐ์ ํตํด State๋ฅผ ๋ฃ์ด์ค ์ ์๊ธฐ ๋๋ฌธ์ด๋ค .
Where to put keys
Element tree๊ฐ key๋ฅผ ๊ฒ์ฌํ๊ณ ์ฌ๋ฐ๋ฅธ context๋ก ์์น์ํฌ ๋๋ ๊ฐ์ ๊ณ์ธต์ ์๋ ์์ ฏ๋ผ๋ฆฌ ๋ฐ๊ฟ์น๊ธฐ๋ฅผ ํ๋ค. ์๋ฅผ๋ค์ด ์ฒ์ padding ์์ ฏ์ ํต๊ณผํ๊ณ ํจ๋ฉ ํ์ ์์ ฏ์์ ํค๊ฐ์ด ํ๋ฆด๊ฒฝ์ฐ ํด๋น ํจ๋ฉ ํ์ ์์ ฏ์ ๋ฐ๊ฟ์น์งํ ์์ ฏ์ด ์๊ธฐ ๋๋ฌธ์ ์๋ก์ด ์ํ๋ฅผ ๋ง๋ค์ด๋ฒ๋ฆฐ๋ค.
๋ฐ๋ผ์ ์์ ๊ฐ์ด ๋ฐ๊ฟ์น๊ธฐํ ๋ญํฑ์ด์ ์์ ์์ ฏ์, ์ฌ๊ธฐ์๋ ํจ๋ฉ์์ ฏ์ ํค๊ฐ์ ๋ถ์ฌํด์ผํ๋ค.
Which Keys you should use
Key ๋ ์ด 5๊ฐ์ง๊ฐ ์กด์ฌํ๋ค. -> Global Key, Value Key, Unique Key, Object Key, Page Storage Key
Global Key
๊ธ๋ก๋ฒ ํค๋ ์ ์ญ์ผ๋ก ์ ์ธ๋๋ ํค์ด๋ค. ํ๋ก์ ํธ ์ด๋์๋ ์ ๊ทผํ ์ ์๊ณ ์ธ์๋๋ค.
๋น์ฐํ ์ ์ญ์ผ๋ก ์ ์ธ๋๊ธฐ ๋๋ฌธ์ ์ต๋ํ ์ฌ์ฉ์ ํ์ง๋ง์์ผํ๋ค.
Value Key
ValueKey๋ ํน์ ๊ฐ์ ๊ธฐ๋ฐํ ํค์ด๋ค. ๋์ผํ ๊ฐ์ด ์ฃผ์ด์ง๋ฉด ๋์ผํ ํค๋ก ๊ฐ์ฃผ๋๋ค. ์ฃผ๋ก ํน์ ๋ฐ์ดํฐ์ ๊ด๋ จ๋ ์์ ฏ์ ์ํ๋ฅผ ๋ณด์กดํ ๋ ์ฌ์ฉ๋๋ค(ํ ์คํธ ๊ฐ์ด๋ผ๋ ๊ฐ..)
Unique Key
UniqueKey๋ ํญ์ ๊ณ ์ ํ ํค๋ฅผ ์์ฑํ๋ค. ๋งค๋ฒ ์๋ก์ด ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋๋ง๋ค ๊ณ ์ ํ ๊ฐ์ด ๋ถ์ฌ๋๋ค.
Object Key
ObjectKey๋ ๊ฐ์ฒด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ํค์ด๋ค. ๋์ผํ ๊ฐ์ฒด์ ๋ํด ๋์ผํ ํค๋ฅผ ์์ฑํ๋ค
Page Storage Key
PageStorageKey๋ ํ์ด์ง ์คํ ๋ฆฌ์ง์ ์ํ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ํค์ด๋ค. ์คํฌ๋กค ์์น๋ ํผ ์ํ ๊ฐ์ ๊ฒ์ ์ ์งํ ๋ ์ฌ์ฉ๋๋ค.
https://www.youtube.com/watch?v=kn0EOS-ZiIc
'๐ฆ Flutter' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Swift์์ KeyPath ํ์ ์ด๋? (1) | 2024.06.24 |
---|---|
Swift ์์ Key-Value Observing ์ด๋? (0) | 2024.06.24 |
| WWDC 16 | Concurrent Programming with GCD (0) | 2024.06.05 |
Flutter ํ๋ฉด์ ํ์์ routes ์ onGenerateRoute ์ ์ฐจ์ด (0) | 2024.06.04 |
๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ๊ณผ Reactive X (0) | 2024.06.03 |