React: Monster

๋ฑ…๊ธฐ๋ฑ…๊ทœยท2022๋…„ 4์›” 23์ผ
0

๐Ÿš€์˜ค๋Š˜ ํ•  ์ผ

์ง€๊ธˆ๊นŒ์ง€ ๋ฐฐ์šด react์˜ state, props๋ฅผ ํ™œ์šฉํ•ด์„œ ์žฌ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ์ปดํฌ๋„ŒํŠธ ํ™œ์šฉํ•˜๊ธฐ
์–ด๋–ป๊ฒŒ ํ• ๊นŒ? github์ƒ์—์„œ react-exercise๋ฅผ ๋ฐ›์•„์„œ ์ดˆ๊ธฐ ์„ธํŒ…(npm install)์„ ํ•˜๋ฉด ๋œ๋‹ค.

์ค€๋น„๋‹จ๊ณ„

ํด๋ก  ํ”„๋กœ์ ํŠธ์˜ ์ฒซ์‹œ์ž‘ = ํด๋ก ๋ฐ›๊ธฐ + npm install
์ฒ˜์Œ์— node.js๋ฅผ ๋ฐ›์„ ๋•Œ, ๋„ˆ๋ฌด ์ƒ์œ„ ํด๋”์— ๋ฐ›์•„์„œ ๊ทธ๋Ÿฐ์ง€ ํ•ญ์ƒ npm install์„ ๋ˆ„๋ฅด๋ฉด, error๊ฐ€ ๋–ด๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ„ฐ๋ฏธ๋„ ์ƒ์—์„œ ์กด์žฌํ•˜๋Š” ํŒŒ์ผ์„ ์—ด์–ด๋ณด๊ณ  ๊ธฐ์กด์— ์žˆ๋˜, node_modules๋ฅผ ์ œ๊ฑฐํ•˜์˜€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ ๋‹ค์‹œ npm install.... ํ•˜์ง€๋งŒ, ๋ณ„๋กœ ํšจ๊ณผ๋Š” ์—†์—ˆ๋‹ค. ๊ฒฐ๊ตญ Desktop์˜ ์ƒˆ๋กœ์šด ํด๋” ์ƒ์„ฑํ›„ ๊ทธ ์•ˆ์— clone์„ ๋ฐ›์€ ํ›„์— ํ•ด๊ฒฐ! (node_modules ์ง€์šฐ๋ฉด ๋œ๋‹ค๊ณ  ์ธํ„ฐ๋„ท์—์„œ ๋ดค๋Š”๋ฐ ์™œ ์•ˆ๋˜๋Š”์ง€๋Š” ์˜๋ฌธ)

1์ฐจ ๊ด€๋ฌธ(๋ฐ์ดํ„ฐ ํŒŒ์ผ ๋ฐ›์•„์˜ค๊ธฐ && ์ปดํฌ๋„ŒํŠธ์— propsํ˜•ํƒœ๋กœ state์ „๋‹ฌ)

์™ธ๋ถ€๋ฐ์ดํ„ฐ๋ฅผ fetchํ•จ์ˆ˜๋กœ ๋ฐ›์•„์™€์„œ, monsters๋ผ๋Š” state์— setUp์„ ํ•˜์˜€๋‹ค. ๊ทธ ํ›„์—, ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ์ธ CardList์— ํ•ด๋‹น monsters props๋ฅผ ๋‚ด๋ ค์คฌ๋‹ค. state๋ฅผ ๊ฐ€์žฅ ์ตœ์ƒ๋‹จ์˜ ๊ตฌ์„ฑ์š”์†Œ์— ๋งŒ๋“ค๊ณ , ํ•ด๋‹น state๊ฐ€ ํ•„์š”ํ•œ ์ปดํฌ๋„ŒํŠธ์— ๋‚ด๋ ค๋‹ค ์ฃผ๋Š”๊ฒƒ์€ ์—ฌ๋Ÿฌ๊ฐ•์˜์—์„œ๋„ ๋‚˜์˜จ ๋‚ด์šฉ์ด๋ผ ์ด์ œ ์ต์ˆ™ํ–ˆ๋‹ค.

2์ฐจ ๊ด€๋ฌธ(์ปดํฌ๋„ŒํŠธ์—์„œ map ํ•จ์ˆ˜ ๋Œ๋ฆฌ๊ธฐ)

์นด๋“œ๊ฐ€ ์ด 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์„ ์“ฐ์ง€ ์•Š๊ณ ๋„ ์‰ฝ๊ฒŒ ์ฝ”๋“œ๋งŒ ๋ณด๊ณ  ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€