ํฐ์คํ ๋ฆฌ ๋ทฐ
โ๏ธ์ํ๊ด๋ฆฌ ์ ํ๋์ง?, state ๊ด๋ฆฌ ์ด๋ป๊ฒ ํ๋์ง?
์ํ
์ดํ๋ฆฌ์ผ์ด์ ์ ํ๋ฉด์ ์ํฅ์ ๋ผ์น๋ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด ์ฆ "๋ณํํ๋ ๋ฐ์ดํฐ"
์ํ์ ์ข ๋ฅ
์ํ๋ ํฌ๊ฒ ๋ฒ์์ ๊ฐ๋ ์์ ์ ์ญ์ํ(Global State)์ ์ปดํฌ๋ํธ ๊ฐ ์ํ(Cross Component State), ๊ทธ๋ฆฌ๊ณ ์ง์ญ์ํ(Local State), ์ธ๊ฐ์ง๋ก ๋๋ ์ ์๋ค.
- ์ง์ญ์ํ : ํน์ ์ปดํฌ๋ํธ ์์์ ๊ด๋ฆฌ๋๋ ์ํ๋ฅผ ๋ปํ๋ค. ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ค๊ณผ ๋ฐ์ดํฐ ๊ณต์ ๋์ง ์๋๋ค ex) input, selectbox
- ์ปดํฌ๋ํธ ๊ฐ ์ํ : ์ฌ๋ฌ๊ฐ์ง ์ปดํฌ๋ํธ์์ ๊ด๋ฆฌ๋๋ ์ํ๋ฅผ ๋ปํ๋ค. ์๋ฅผ๋ค์ด ๋ชจ๋ฌ๋ก ๋ณดํต ์ฌ์ฐ์ด ์ปดํฌ๋ํธ์์ ํ์ ์ปดํฌ๋ํธ prop์ ๋๊ฒจ ํด๋น ์ปดํฌ๋ํธ๊น์ง ์ ๋ฌ ๋๋๋ก ํ๋ Prop Drilling ๋ฐฉ์์ด ํ์ํ๋ค.
*Prop Drilling : ์ค์ง ํ์ ์ปดํฌ๋ํธ๋ก ์ ๋ฌํ๋ ์ฉ๋๋ก๋ง ์ฐ์ด๋ ์ปดํฌ๋ํธ๋ฅผ ๊ฑฐ์น๋ฉฐ ์ปดํฌ๋ํธ์์ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ก ์ ๋ฌํ๋ ๊ณผ์
- ์ ์ญ์ํ : ํ๋ก์ ํธ ์ ์ฒด์ ์ํฅ์ ๋ผ์น๋ ์ํ, ์๋ฅผ๋ค๋ฉด ์ ์ ๊ธฐ๋ฅ์ด ์๋ค. ์ด ๋ํ Prop Drilling ๋ฐฉ์์ ํ์ฉํ๋ค.
์ํ๊ด๋ฆฌ๋ ์ ํ์ํ๊ฐ ?
์๋ก ๋ค๋ฅธ ๋ ์ปดํฌ๋ํธ์ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ํ์ํ๋ค๊ณ ํ ๋, ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ก ๋ณด๋ด๊ณ , ๋ค์ ๊ทธ ๋ฐ์ดํฐ ํ์ํ ์ปดํฌ๋ํธ๋ก ์ ๋ฌํด์ผํ๋ค. ํ์ง๋ง ์ด๋ ๊ฒ Prop Drilling์ด ๋ง์์ง๋ฉด ์ด prop์ด ์ด๋์์ ์๋์ง ์ถ์ฒํ๊ธฐ ์ด๋ ค์ ์ง๋ค๋ ์ ์์ ์ํ๊ด๋ฆฌ ํด์ ์ ํํด ์ํ๋ฅผ ์ ๊ด๋ฆฌํด์ผ ํ๋ค.
*์ํ ๊ด๋ฆฌ๋ฅผ ์ํ ํด : Context API, Redux(toolkit), React Query
์ข์ ์ํ๊ด๋ฆฌ ๋ฐฉ๋ฒ
- ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ์๋ ์ง์ญ ์ํ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
- ์ง์ญ์ํ๋ก๋ State๋ ๊ด๋ จ ์ปดํฌ๋ํธ๋ค๊ณ ์ต๋ํ ๊ฐ๊น์ด ๋ฐฐ์น ๋๋๊ฒ ์ข๋ค. ๋ง์ฝ ๊ด๋ จ ์ปดํฌ๋ํธ์ ๋ฉ์ด์ง๋ค๋ฉด ๊ด๋ จ ์๋ ์ปดํฌ๋ํธ ๋ฆฌ๋ ๋๊น์ง ์ผ์ผํฌ ์ํ์ด ์๋ค.
- ์ง์ญ ์ํ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌ ์ ๋ค์์ ์ปดํฌ๋ํธ ๊ฐ์ ์ํ ์์กด์ฑ์ด ๋์์ง๋ค๋ฉด ์ ์ญ ์ํ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
- ์ ์ญ ์ํ ๊ด๋ฆฌ ์ ์๋ฒ์์ ๊ฐ์ ธ์ค๋ ๋ฐ์ดํฐ(DB)์, UI ์ํ๋ฅผ ๋ํ๋ด๋ ๋ฐ์ดํฐ๋ ๋ถ๋ฆฌํ์ฌ ๋ค๋ฃฌ๋ค.
- ์๋ฒ ๋ฐ์ดํฐ ์บ์ฑ ์ ์ ์ญ ์ํ๋ก ๋ค๋ฃจ๋ฉด ์๋๋ค. ์๋ฒ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ค๋ฉด, SWR์ด๋ React-Query ์ ๊ฐ์ ์๋ฒ ์บ์ฑ ์ ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
๐ฏ์ถ์ฒ
https://mingule.tistory.com/74
React์์ ์ํ๊ด๋ฆฌํ๊ธฐ (feat. Context API, Redux, React Query)
์ต๊ทผ์ ํ๋ก ํธ์๋ ์ํ๊ด๋ฆฌ์ ๋ํด ๊ฐ์ด ์ผํ๋ ์ธํด๋ถ๋ค๊ณผ ์ ๊น ์ด์ผ๊ธฐ ํ ์ผ์ด ์๊ฒผ๋ค! ์์ฆ ์ ๋ง ๋ง์ ์ํ๊ด๋ฆฌ ๋๊ตฌ๋ค์ด ์๋๋ฐ, ์ด ์ค์์ ๋ฌด์ผ ์ด๋ป๊ฒ ์ ํํด์ผํ ์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค๋ ๋ง์
mingule.tistory.com
https://chanhuiseok.github.io/posts/react-15/
[React] ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ์ฌ
[react] ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ์ฌ
chanhuiseok.github.io
https://han-py.tistory.com/487
[react] ์ํ๊ด๋ฆฌ ๊ธฐ์ด - ํจ์จ์ ์ผ๋ก ๋ฐ์ดํฐ ์ ์ฅํ๊ณ ์์ ํ๊ธฐ
react๋ก ๊ตฌํ์ ํ๋ค๋ณด๋ฉด, useState๋ฅผ ํ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์์ ํ๋ค. state๋ ํ๊ตญ์ด๋ก ์ํ์ด๋ค. ์ฆ, ์ด๋ฌํ ์ํ๊ด๋ฆฌ์ธ ๋ฐ์ดํฐ๊ด๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์. ๋น์ฐํ ๋ง์ด
han-py.tistory.com
'๐Frontend > ๐etc' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[WIL]Context API (0) | 2022.10.13 |
---|---|
[WIL] Redux (feat. tool-kit) (0) | 2022.10.12 |
[ํญํด99]์ฒซ ํ์ ์ ์งํํ๋ฉฐ ๋๋ ์์ฌ์ด ์ , ๋ฟ๋ฏํ ์ (0) | 2022.08.21 |
[ํญํด99]WIL (0) | 2022.08.14 |
[WIL] Life cycle, Hooks (0) | 2022.08.07 |
- Total
- Today
- Yesterday
- DB๋ชฝ๊ณ
- db
- ์๋ฒ
- Wil
- ์๋ฐ์คํฌ๋ฆฝํธ
- Redux
- JavaScript
- git
- CS
- Router
- ์คํ๋ฅดํ์ฝ๋ฉํด๋ฝ
- ํฌ๋กค๋ง
- scss
- ํญํด99
- HTML
- styled-components
- flask
- CSS
- ์๊ณ ๋ฆฌ์ฆ
- API
- Git Code
- react
- Til
- DESIGN
- ๋ฉ์ดํน ์ฑ๋ฆฐ์ง
- Python
- JWT
- sass
- CS ์คํฐ๋
- ํธ๋ฌ๋ธ ์ํ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |