- ๋ก์ง์ ์ํํ๋ ์ปดํฌ๋ํธ(=
Container Component
)์ UI๋ฅผ ๊ตฌํํ๋ ๋งํฌ์ (HTML, XML ๋ฑ) ์ปดํฌ๋ํธ(=Presentational Component
)๋ฅผ ๋ถ๋ฆฌ์ํค๋ ํจํด - ๊ธฐ๋ฅ ๋ด๋น๋ถ์ ๋ทฐ ๋ด๋น๋ถ๋ฅผ ๋ถ๋ฆฌ์์ผ ๋ชจ๋์ฑ, ์ฌ์ฌ์ฉ์ฑ์ด ๋ฐ์ด๋ ๋ฐฉ์. ๋ด๋น ์ญํ ์ ๋ฐ๋ผ ๋ถ๋ฆฌ๋์ด์๊ธฐ ๋๋ฌธ์ ๋น์ฐํ ์ ์ง๋ณด์๋ ๋ ์ฝ๋ค!
- header์ footer๊ฐ์ด ์ฌ๋ฌ ๊ณณ์์ ๋ฐ๋ณต์ ์ผ๋ก ์ฐ์ด๋ ๋์์ธ ์ปดํฌ๋ํธ๋
props
๋ฅผ ํตํด ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ก ์ ๋ฌํ์ฌ ์ฌ์ฌ์ฉํ ์ ์๋ค.
- header์ footer๊ฐ์ด ์ฌ๋ฌ ๊ณณ์์ ๋ฐ๋ณต์ ์ผ๋ก ์ฐ์ด๋ ๋์์ธ ์ปดํฌ๋ํธ๋
- Container Component :
- ๋ ๋๋งํ๊ณ ์ ํ๋ ๋ฐ์ดํฐ๋ฅผ props์ ๋ฃ์ด ๋ค๋ฅธ ์ปจํ ์ด๋๋ presentation์ผ๋ก ์ ๋ฌํ๋ค
- Presentational Component :
- ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ด ์๊ณ
- but, ๋ก์ง๊ณผ ๋ทฐ๋ฅผ ๋ชจ๋ ๋ถ๋ฆฌํ๋ ๋ฐฉ์์ด๋ฏ๋ก ํ์ผ์ ์๊ฐ ๋์ด๋๋ค๋ ์ ์ด ์๋ค.
- ์ญํ ๋ณ๋ก ์ปดํฌ๋ํธ๋ฅผ ๋ถ๋ฆฌํ๋ ๊ฒ์ ์ง์คํ ๋ฐฉ์
- ๋ฐ๋ผ์ ๋ก์ง์ด ํ๋ ๊ธฐ๋ฅ์ ๋ฐ๋ผ ๋ถํ ํ๊ธฐ ๋๋ฌธ์, ๋ฐ๋ณต์ ์ผ๋ก ํ์ํ ๊ธฐ๋ฅ์ ๊ฐ์ง ๋ก์ง์ ์ฌ์ฌ์ฉํ๊ธฐ ์ข๋ค.
- React ํจ์ ๋ด์์, ๊ทธ๋ฆฌ๊ณ ์ต์์์์ ํธ์ถ๋์ด์ผ๋ง ํ๋ฉฐ, ์ด๋ฆ์ด โuseโ๋ก ์์ํด์ผ ํ๋ค๋ ๊ท์น์ ๊ฐ์ง๋ค.
- ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด์ง๋ค!
- ๊ฐ์ฅ ์์ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ฅ ์์ ๋จ์์ธ Atom์ผ๋ก ์ผ๊ณ , ์ํฐ์ผ๋ก ์ด๋ฃจ์ด์ง ์กฐํฉ์ผ๋ก ์์ ์ปดํฌ๋ํธ๊ฐ ์๊ธฐ๋ ํจํด์ด๋ค
- ์ํฐ๋ถํฐ ์์ ์ปดํฌ๋ํธ๋ก ์ฌ๋ผ๊ฐ๋ ๋จ๊ณ๋ Atom โ Molecules โ Organisms โ ํ ํ๋ฆฟ โ ํ์ด์ง ์
- ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์์ ์๊ฐ ๊ฒฐํฉ์ฒด์์ ์ฌ๋ฌ๋ฒ ์ฌ์ฉ๋ ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฌ์ฉ์ฑ์ด ๋๋ค
- Atom : basic html elements (ex - button, title ๋ฑ)
- Molecules : ๋๊ฐ ์ด์์ Atoms๋ก ์ด๋ค์ง๋ ์์ ๋จ์ (ex- form, nav ๋ฑ)
- Templates : Atoms, Molecules, Organisms๊ฐ ์ด๋ป๊ฒ ์กฐํฉ๋๋์ง์ ์ค๊ณ ๊ตฌ์กฐ
- Pages : Templates์ ๊ตฌ์กฐ๋ฅผ ๋๋ฒจ๋กญ์์ผ ์ค์ ์ปจํ ์ธ ๋ฅผ ๋ฐฐ์นํด UI๋ฅผ ์์ฑํ ๋จ์
- ๋ค๋ง ๊ณ์ธต ๊ตฌ์กฐ์ฌ์ ์ปดํฌ๋ํธ ๊ฐ์ ์ํ๊ด๊ณ ์์กด์ฑ์ด ๊ฐํ๊ธฐ ๋๋ฌธ์ ์๋ฌ๊ฐ ์ฐ์์ ์ผ๋ก ์ผ์ด๋ ์ ์๋ ์ํ์ฑ์ด ์๋ค.
- 1๋ฒ : ํน์ ๋ทฐ๋ ๋ก์ง์ด ๋ฐ๋ณต๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ๊ฒฝ์ฐ
- 2๋ฒ : ๊ธฐ๋ฅ๋ค์ด ๋์ฒด๋ก ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ
- 3๋ฒ : ์ปดํฌ๋ํธ์ ์์ด ๋ง๊ณ , ํน์ ์ปดํฌ๋ํธ๋ง ๋ฐ๋ณต๋๋ ๊ฒ์ด ์๋, ์ ๋ฐ์ ์ผ๋ก ์ผํค๊ณ ์คํจ ํฌํจ๊ด๊ณ๋ฅผ ๊ฐ์ง ๊ฒฝ์ฐ, ์ต๋ํ ์์ ๋จ์๋ก ๊ณ์ ์กฐ๊ฐ๋ด์ด ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๋ฉด ์ข์ ๊ฒ์ด๋ค. ๋ ์คํ์ผ ์ปดํฌ๋ํธ๋ฅผ ๋ฐ๊ฟ์ผํ ๋ (์๋ฅผ๋ค์ด ํ๋ก์ ํธ ๋ด ์ฌ์ฉํ ๋ชจ๋ ๋ฒํผ์ ์ ์ฉ๋ ํ ๋ง ์ปฌ๋ฌ๋ฅผ ์ผ๊ด ๋ณ๊ฒฝํ๊ณ ์ ํ ๋) ๋งค์ฐ ํธ๋ฆฌํ๋ค.
์ง๋ ๊ณผ์ ์๋ ์น์ต์ ํ๊ฐ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์๊ฒ ํ์ํ ์ด์ ์ ๋น์ทํ๋ค๊ณ ์๊ฐํ๋ค. ์น์ต์ ํ๋ ๋น ๋ฅธ ๋ ๋๋ง ์๊ฐ, ํฅ์๋ ์ฌ์ฉ์์ ๊ฒฝํ์ ์ํด ํ์ํ๋ค๊ณ ๋ต๋ณํ์๋๋ฐ, ํ๋ก ํธ์๋ ๋์์ธ ํจํด๋ ๊ฒฐ๊ตญ ์ฝ๋์ โ์ฌ์ฌ์ฉ์ฑโ์ ๋์ด๋ ํจ๊ณผ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ ๋ถํ์ํ ๋ฆฌ๋ ๋๋ง์ ์ค์ด๋ฉฐ ํฅ์๋ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ ์ ์๋ค๊ณ ์๊ฐํ๋ค. ๋ฐ๋ผ์ ์ฌ์ฉ์๋ฅผ ์ํด ํ๋ก์ ํธ์ ์ต์ ํ๋ ๋์์ธ ํจํด์ ์ ์ ํ ์ ์ ์ฉํ๋ ๊ฒ์ด ์ค์ํ๋ค๊ณ ์๊ฐํ๋ฉฐ, ์ด๋ค ํ๋ก์ ํธ์ฌ๋ โ์ ์ง๋ณด์โ๊ฐ ์ ๋ง ์ค์ํ๊ธฐ ๋๋ฌธ์, ์ ํด์ง ํจํด/๊ท์น์ ๋ฐ๋ผ ์ฝ๋๋ฅผ ์ ๋ถํ ํ๋ ๊ณผ์ ์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ๊ผญ ํ์ํ ๊ฒ ๊ฐ๋ค!!