์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ํ๋ก๊ทธ๋๋จธ์ค
- css animation
- Cmarket
- Study
- ํผํฐ ๋ชจ๋น
- ์ ์ด์ฝฅ ๋์จ
- ์คํ ์ด์ธ ์ฝ๋
- Lifting state
- ํผํฐ ๋ชจ๋น์ ๋ฒ์ง ๋ชจํ
- ๊ณ ์ฐจํจ์
- ์ปดํจํฐ ๊ณตํ
- wai-aria
- WEB
- git
- ์๋งจํฑ์์
- React
- prototype
- html
- Effect Hook
- State
- ํ ์คํธ ์์
- jsx
- css
- ๋ฒ์ง ๋ชจํ
- ์คํ ์ด์ธ ์ฝ๋42๊ธฐ
- BFS์ DFS
- props drilling
- fetch api
- ๋ฒ๋ค๋ง
- JavaScript
- Today
- Total
roqkf
[React] React ๋ฐ์ดํฐ ํ๋ฆ๊ณผ Lifting state up ๋ณธ๋ฌธ
[React] React ๋ฐ์ดํฐ ํ๋ฆ๊ณผ Lifting state up
ahyeon7 2022. 12. 11. 21:45Intro...
React์ ๊ฐ๋ฐ ๋ฐฉ์ ์ค ๊ฐ์ฅ ํฐ ํน์ง์ ํ์ด์ง ๋จ์๊ฐ ์๋, ์ปดํฌ๋ํธ ๋จ์๋ก ์์ํ๋ค๋ ๊ฒ์ด๋ค. ํ๋กํ ํ์ ์์ ์ปดํฌ๋ํธ๋ฅผ ์ฐพ์๋ด์ด ๊ฐ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด ๊ฐ๋ฉด์ ํ์ด์ง๋ฅผ ๋ง๋ค์ด ๋๊ฐ๋ค. ์ฆ ์ํฅ์์ผ๋ก ํ๋กํ ํ์ ์ฑ์ ๋ง๋ ๋ค๋ ๊ฒ์ด๋ค. ํ์ด์ง๋ฅผ ๋ง๋ค๊ธฐ ์ ์ ์ปดํฌ๋ํธ๋ฅผ ๋จผ์ ๋ง๋ค๊ณ ์ด๋ฅผ ์กฐ๋ฆฝํ๋ฉฐ ํ์ด์ง๋ฅผ ์์ฑ์์ผ ๋๊ฐ๋ค๋ ๊ฒ์ ์ฅ์ ์ ํ ์คํธ๊ฐ ์ฌ์ฐ๋ฉด์๋ ํ์ฅ์ฑ์ด ์ข๋ค. ๊ทธ๋์ ๊ธฐํ์, PM, UX ๋์์ด๋๋ก๋ถํฐ ์ฑ ๋์์ธ(ํ๋กํ ํ์ )์ ์ ๋ฌ๋ฐ๊ณ ๋๋ฉด ์ปดํฌ๋ํธ ๊ณ์ธต ๊ตฌ์กฐ๋ก ๋๋๋ ๊ฒ์ ๊ฐ์ฅ ๋จผ์ ํด์ผ ํ๋ค.
React ๋ฐ์ดํฐ ํ๋ฆ
๊ทธ๋ฆผ๊ณผ ๊ฐ์ ํํ์ ์ปดํฌ๋ํธ๋ฅผ ๋์์ธํ๋ค๊ณ ๊ฐ์ ํด ๋ณด์. ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ปดํฌ๋ํธ๋ฅผ ๋ถ๋ฅํ ์ด์ ๋ ํ๋์ ์ปดํฌ๋ํธ๋ ํ ๊ฐ์ง ์ผ์ ํ๋ค๋ ๋จ์ผ ์ฑ ์ ์์น์ ๋ฐ๋ฅธ ๊ฒ์ด๋ค.
์ด๋ฅผ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๋ํ๋ด๋ฉด ์์ ๊ฐ๋ค. ๋ค์์ ์ฐธ๊ณ ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ด๋์ ๋์ง ๊ฒฐ์ ํ๋ค.
์ปดํฌ๋ํธ๋ ์ปดํฌ๋ํธ ๋ฐ๊นฅ์์ props ๋ฅผ ์ด์ฉํด ๋ฐ์ดํฐ๋ฅผ ๋ง์น ์ ๋ฌ์ธ์, ์์ฑ์ฒ๋ผ ์ ๋ฌ๋ฐ์ ์ ์๋ค. / ๋ฐ์ดํฐ๋ ์์์ ์๋ ๋ฐฉํฅ์ผ๋ก ์ ๋ฌ๋๋ค. ์ฆ, ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ์ฃผ์ฒด๊ฐ ๋ถ๋ชจ ์ปดํฌ๋ํธ์ด๋ฉฐ ์ด๋ ๋ฐ์ดํฐ์ ํ๋ฆ์ด ํํฅ์์ผ๋ก ํ๋ฌ๊ฐ๊ณ ์์์ ์๋ฏธํ๋ค. React๋ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ ๋ฐ๋ฅด๊ธฐ ๋๋ฌธ์ ์ปดํฌ๋ํธ๋ props๋ฅผ ํตํด ์ ๋ฌ๋ฐ์ ๋ฐ์ดํฐ๊ฐ ์ด๋์ ์๋์ง ์์ง ๋ชปํ๋ค.
โ Application์์ ํ์ํ ๋ฐ์ดํฐ๊ฐ ๋ฌด์์ธ์ง ๋จผ์ ์ ์ํ์!
[Twittler ์ ํ๋ฆฌ์ผ์ด์ ์ด ๊ฐ์ง๊ณ ์๋ ์ํ]
- ์ ์ฒด ํธ์ ๋ชฉ๋ก
- ์ฌ์ฉ์๊ฐ ์์ฑ ์ค์ธ ์๋ก์ด ํธ์์ ๋ด์ฉ
- ์ด ์ค์์ ๋ณํ๋ ๊ฐ๊ณผ ๋ณํ์ง ์๋ ๊ฐ์ ๋ฌด์์ผ๊น? ์ฌ์ฉ์ ์ ๋ ฅ์ ์ด๋ฒคํธ์ ๋ฐ๋ผ์ ์ผ๋ง๋ ์ง ๋ณํ ์๊ฐ ์๋๋ฐ ์ด๊ฒ์ ์ํ๋ผ๊ณ ํ๋ค. ํธ์ ๋ชฉ๋ก์ด ์ถ๊ฐ, ์ญ์ ๋ ์ฌ์ง๊ฐ ์๋ค๋ฉด ์ฌ์ค state๋ก ๋ ํ์๊ฐ ์์ง๋ง ์ฐ๋ฆฌ๋ ์ ํธ์ ์ถ๊ฐ๋ผ๋ ๊ธฐ๋ฅ์ ์ผ๋ํด ๋๊ณ ์๊ธฐ ๋๋ฌธ์, ํธ์ ๋ชฉ๋ก ์ญ์ ์ํ์ด๋ค.
- ๋ถ๋ชจ๋ก๋ถํฐ props๋ฅผ ํตํด ์ ๋ฌ๋๋์? โ
- ์๊ฐ์ด ์ง๋๋ ๋ณํ์ง ์๋์? โ
- ์ปดํฌ๋ํธ ์์ ๋ค๋ฅธ state๋ props๋ฅผ ๊ฐ์ง๊ณ ๊ณ์ฐ์ด ๊ฐ๋ฅํ๊ฐ์? โ
= ๐ฅ ๊ทธ๋ ๋ค๋ฉด ๊ทธ๊ฒ์ state๊ฐ ์๋๋๋ค!!
๐ค ๊ทธ๋ ๋ค๋ฉด ์ํ๋ฅผ ์ด๋์ ์์น์์ผ์ผ ๋ ๊น?
์ํ๊ฐ ํน์ ์ปดํฌ๋ํธ์์๋ง ์ ์๋ฏธํ๋ค๋ฉด, ํน์ ์ปดํฌ๋ํธ์๋ง ๋๋ฉด ๋๋ฏ๋ก ํฌ๊ฒ ์ด๋ ต์ง ์๋ค. ํ์ง๋ง ํ๋์ ์ํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ ์ปดํฌ๋ํธ๊ฐ ์ํฅ์ ๋ฐ๋๋ค๋ฉด ์ด๋ ๊ณตํต ์์ ์ปดํฌ๋ํธ๋ฅผ์ฐพ์ ๊ทธ๊ณณ์ ์ํ๋ฅผ ์์น์์ผ์ผ ํ๋ค. ์ฆ, ๋ ๊ฐ์ ์์ ์ปดํฌ๋ํธ๊ฐ ํ๋์ ์ํ์ ์ ๊ทผํ๊ณ ์ ํ ๋๋ ๋ ์์์ ๊ณตํต ๋ถ๋ชจ ์ปดํฌ๋ํธ์ ์ํ๋ฅผ ์์น์์ผ์ผ ํ๋ค.
์ญ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ ์ถ๊ฐ
์์ React๋ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ ๊ฐ์ง๊ณ ์๋ค๊ณ ํ๋๋ฐ ์ญ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ ๋ฌด์์ผ๊น?
์ํ ์์น๋ฅผ ์ ๋ถ ์ ํ๊ณ ๋์ ์๊ฐํด ๋ณด๋, ๋ถ๋ชจ ์ปดํฌ๋ํธ์์์ ์ํ๊ฐ ํ์ ์ปดํฌ๋ํธ์ ์ํด ๋ณํ๋ ๊ฒ์ ๋ฐ๊ฒฌํ ์ ์๋ค. ๋ฐ๋ก ์๋ก์ด ํธ์ ์ถ๊ฐ๊ฐ ๋ํ์ ์ธ ์์ด๋ค. ๋ฒํผ์ ํตํ Action์ ๋ถ๋ชจ์ ์ํ๋ฅผ ๋ณํ์์ผ์ผ ํ๋ค. ํ์ ์ปดํฌ๋ํธ์์์ ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ๋ถ๋ชจ์ ์ํ๋ฅผ ๋ฐ๊พธ์ด์ผ๋ง ํ๋ ์ํฉ์ด ์ค๋ฉด ์ด๋ป๊ฒ ํด๊ฒฐํ ์ ์์๊น?
๐ก Lifting state up
- ์ํ๋ฅผ ๋ณ๊ฒฝ์ํค๋ ํจ์๋ฅผ ํ์ ์ปดํฌ๋ํธ์ props๋ก ์ ๋ฌํด์ ํด๊ฒฐํ ์ ์๋ค. ์ฝ๋ฐฑ ํจ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ ๋น์ทํ๋ค!
- ๋จ๋ฐฉํฅ ๋ฐ์ดํธ ํ๋ฆ์ด๋ผ๋ ์์น์ ๋ฐ๋ผ์ ํ์ ์ปดํฌ๋ํธ๋ ์์ ์ปดํฌ๋ํธ๋ก๋ถํฐ ์ ๋ฌ๋ฐ์ ๋ฐ์ดํฐ์ ํํ ํน์ ํ์ ์ด ๋ฌด์์ธ์ง๋ง ์ ์ ์๋ค. ๋ฐ์ดํฐ๊ฐ state๋ก๋ถํฐ ์๋์ฆค, ํ๋์ฝ๋ฉ์ผ๋ก ์ ๋ ฅํ ๋ด์ฉ์ธ์ง๋ ์์ง ๋ชปํ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํ์ ์ปดํฌ๋ํธ์์์ ์ด๋ค ์ด๋ฒคํธ๋ก ์ธํด์ ์์ ์ปดํฌ๋ํธ์ ์ํ๊ฐ ๋ฐ๋๋ ๊ฒ์ด ๋ง์น "์ญ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ" ๊ณผ ๊ฐ์ด ์ด์ํ๊ฒ ๋ค๋ฆด ์ ์๋ค. React์์ ์ ์ํ๋ ํด๊ฒฐ์ฑ ์ ์์ ์ปดํฌ๋ํธ์ "์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ํจ์" ๊ทธ ์์ฒด๋ฅผ ํ์ ์ปดํฌ๋ํธ๋ก ์ ๋ฌํ๊ณ , ์ด ํจ์๋ฅผ ํ์ ์ปดํฌ๋ํธ๊ฐ ์คํํ๋ ๊ฒ์ด๋ค. ์ด๋ฐ ๋ฐฉ์์ ์ฌ์ ํ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ ์์น์ ๋ถํฉํ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด๋ฉฐ ์ด๊ฒ์ ๋ฐ๋ก "์ํ ๋์ด์ฌ๋ฆฌ๊ธฐ"๋ผ๊ณ ํ๋ค.
[์์ 1]
[์์ 2]
[์์ 3]
'๐ป Development > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] ์ํ๊ด๋ฆฌ (0) | 2022.12.27 |
---|---|
[React] Effect Hook (0) | 2022.12.11 |
[React] React์์์ State ์ด๋ฒคํธ ์ฒ๋ฆฌ (1) | 2022.11.30 |
[React] React State & Props (0) | 2022.11.30 |
[React] React Router (0) | 2022.11.30 |