์ง๊ธ๊น์ง ๋ฐฐ์ด react์ state, props๋ฅผ ํ์ฉํด์ ์ฌ์ฌ์ฉ๊ฐ๋ฅํ ์ปดํฌ๋ํธ ํ์ฉํ๊ธฐ
์ด๋ป๊ฒ ํ ๊น? github์์์ react-exercise๋ฅผ ๋ฐ์์ ์ด๊ธฐ ์ธํ
(npm install)์ ํ๋ฉด ๋๋ค.
ํด๋ก ํ๋ก์ ํธ์ ์ฒซ์์ = ํด๋ก ๋ฐ๊ธฐ + npm install
์ฒ์์ node.js๋ฅผ ๋ฐ์ ๋, ๋๋ฌด ์์ ํด๋์ ๋ฐ์์ ๊ทธ๋ฐ์ง ํญ์ npm install์ ๋๋ฅด๋ฉด, error๊ฐ ๋ด๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ํฐ๋ฏธ๋ ์์์ ์กด์ฌํ๋ ํ์ผ์ ์ด์ด๋ณด๊ณ ๊ธฐ์กด์ ์๋, node_modules๋ฅผ ์ ๊ฑฐํ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ ๋ค์ npm install.... ํ์ง๋ง, ๋ณ๋ก ํจ๊ณผ๋ ์์๋ค. ๊ฒฐ๊ตญ Desktop์ ์๋ก์ด ํด๋ ์์ฑํ ๊ทธ ์์ clone์ ๋ฐ์ ํ์ ํด๊ฒฐ! (node_modules ์ง์ฐ๋ฉด ๋๋ค๊ณ ์ธํฐ๋ท์์ ๋ดค๋๋ฐ ์ ์๋๋์ง๋ ์๋ฌธ)
์ธ๋ถ๋ฐ์ดํฐ๋ฅผ fetchํจ์๋ก ๋ฐ์์์, monsters๋ผ๋ state์ setUp์ ํ์๋ค. ๊ทธ ํ์, ํ์ ์ปดํฌ๋ํธ์ธ CardList์ ํด๋น monsters props๋ฅผ ๋ด๋ ค์คฌ๋ค. state๋ฅผ ๊ฐ์ฅ ์ต์๋จ์ ๊ตฌ์ฑ์์์ ๋ง๋ค๊ณ , ํด๋น state๊ฐ ํ์ํ ์ปดํฌ๋ํธ์ ๋ด๋ ค๋ค ์ฃผ๋๊ฒ์ ์ฌ๋ฌ๊ฐ์์์๋ ๋์จ ๋ด์ฉ์ด๋ผ ์ด์ ์ต์ํ๋ค.
์นด๋๊ฐ ์ด 10๊ฐ ์กด์ฌํ๊ณ , ์นด๋ ํ๋ํ๋์ ๋ฐ์ดํฐ๊ฐ monsters์ ๊ฐ์ฒดํํ๋ก ๋ค์ด์๊ธฐ ๋๋ฌธ์ monsters๋ผ๋ ์นด๋์ ๋ณด๊ฐ ๋ด๊ธด ๋ฐฐ์ด์ mapํจ์๋ฅผ ์ด์ฉํ์ฌ, ๋ชจ๋ ์นด๋ ์ ๋ณด์ id, name, email์ ๋ณด๋ฅผ ํ์ ์ปดํฌ๋ํธ์ธ Card์ ๋ด๋ ค์ค๋ค. ๊ทธ๋ ๊ฒ ์ป์ ๋ฐ์ดํฐ๋ฅผ cardList๋ผ๋ className์ divํ๊ทธ์ ๋ฃ์ผ๋ฉด, ์นด๋๊ฐ ๋ด๊ธธ ๊ณต๊ฐ์ด ์๊ธด๋ค.
2์ฐจ๊น์ง๊ฐ ์ด๋ ค์ด ๋ถ๋ถ์ด์๊ณ , ๋ง์ง๋ง์ ์นด๋ํ๋์ ๊ตฌ์ฑ์ ๋ง๋ ํ๊ทธ๋ฅผ ๋ถ์ฌํ๋ ์ผ์ด์๋ค. ๊ตฌ์กฐ๋ถํดํ ๋น์ผ๋ก ๊ฐ์ ธ์จ props์ id๊ฐ์ ์ฌ์ง์ ๋ถ๋ฌ์ค๊ธฐ ์ํ ์๋จ์ผ๋ก ์ฌ์ฉํ๊ณ , ์ด๋ฆ์ h2ํ๊ทธ์ ๋ฃ๊ณ , email์ pํ๊ทธ์ ๋ฃ์ด ์ด๋ฆ์ ๋ ํฌ๊ฒ ํ๊ธฐํ์๋ค.
์ด๋ ๊ฒ ํ์ฌ, ๊ฐ๊ฐ์ monste์ ์ฌ์ง, ์ด๋ฆ, email์ด ๋ด๊ธด ์นด๋๊ฐ ๋์๋ค.
์ง๊ธ๊น์ง๋ ์ผ๋จ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ปดํฌ๋ํธ๋ฅผ ๋๋๋ ์์ ์ ํ๋ค๋ฉด, monster ํ๋ก์ ํธ๋ ์ฒ์๋ถํฐ ์ปดํฌ๋ํธ ๊ตฌ์กฐํ๋ฅผ ํ ๊ณณ์ ํ์ ํ๊ณ ๊ฐ๊ฐ์ ์ปดํฌ๋ํธํ ์ํจ ํ, ์ฝ๋์ ๊ธธ์ด๋ฅผ ํ๊ธฐ์ ์ผ๋ก ์ค์ด๋ ๋ฐฉ์์ด์๋ค. ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฌ์ฉํ๋ฉด์, ๋ณต์ก์ ํ์ง๋ง, ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ผ ์ ์๋ค๋ ๊ฒ์ ์ฒด๊ฐํ ์ ์์๋ค. ์ด์ ์ด ์นด๋์ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ ์ถ์ผ๋ฉด, props๋ฅผ ํ๋ ๋ ๋ฐ์์์ Card์ปดํฌ๋ํธ ๋ฆฌํด๊ฐ์ ์ถ๊ฐ๋งํด์ฃผ๋ฉด ๋๋๊ฒ์ ๊นจ๋ฌ์๋ค. ๋ํ monster๋ก ์ธํด state๊ฐ ๊ณ์ props๋ก ๋ด๋ ค๊ฐ๋ค ๋ณด๋ฉด ํท๊ฐ๋ฆด ์ ์์ง๋ง, ๊ตฌ์กฐ๋ถํดํ ๋น์ผ๋ก ๊ฐ๊ฐ์ด ์ด๋ ํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณ ์๋์ง console์ ์ฐ์ง ์๊ณ ๋ ์ฝ๊ฒ ์ฝ๋๋ง ๋ณด๊ณ ํ์ ํ ์ ์์๋ค.