ÄÜÅÙÃ÷ »ó¼¼º¸±â
¹é°ßºÒ¿©ÀÏŸ ¸®¾×Æ® ¼îÇθô ÇÁ·ÎÁ§Æ®


¹é°ßºÒ¿©ÀÏŸ ¸®¾×Æ® ¼îÇθô ÇÁ·ÎÁ§Æ®

¹é°ßºÒ¿©ÀÏŸ ¸®¾×Æ® ¼îÇθô ÇÁ·ÎÁ§Æ®

<È«ÁØÇõ> Àú | ·ÎµåºÏ

Ãâ°£ÀÏ
2024-08-30
ÆÄÀÏÆ÷¸Ë
ePub
¿ë·®
27 M
Áö¿ø±â±â
PC½º¸¶Æ®ÆùÅÂºí¸´PC
ÇöȲ
½Åû °Ç¼ö : 0 °Ç
°£·« ½Åû ¸Þ¼¼Áö
ÄÜÅÙÃ÷ ¼Ò°³
ÀúÀÚ ¼Ò°³
¸ñÂ÷
ÇÑÁÙ¼­Æò

ÄÜÅÙÃ÷ ¼Ò°³

¸¸µé¸é¼­ ¸®¾×Æ®¸¦ ºü¸£°Ô ¹è¿ï ¼ö Àִ åÀÌ´Ù. ¡®¼îÇθô ¼­ºñ½º¡¯¸¦ ¸¸µé¾îº¼ ÁÖÁ¦·Î ÅÃÇÑ ÀÌÀ¯´Â ¼îÇθôÀÇ CRUD(»óÇ° µî·Ï, Á¶È¸, ¼öÁ¤, »èÁ¦) ±â´É ±¸ÇöÀ» ÅëÇØ ´Ù¸¥ ÁÖÁ¦·Î ½±°Ô È®ÀåÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. ¼ø¼ö ¸®¾×Æ®·Î¸¸ ¼îÇθôÀ» °³¹ßÇÏ¸ç ¼­¹ö´Â ´Ù¸¥ ±â´É ¾øÀÌ µ¥ÀÌÅ͸¸ ÁÖ°í¹ÞÀ» ¼ö ÀÖ°Ô²û ÃÖ¼ÒÇÑÀÇ ±â´É¸¸ Á¦°øÇÏ°í ÀÖ´Ù. ÀÌ Ã¥À¸·Î ÇÁ·ÐÆ®¿£µå °³¹ßÀ» Àç¹Õ°í ºü¸£°Ô ¹è¿ï ¼ö ÀÖ¸¦ ¹Ù¶õ´Ù.

ÀúÀÚ¼Ò°³

À¥ ÇÁ·ÐÆ®¿£µå °³¹ßÀÚ. ¿¹ÀüºÎÅÍ ÄÚµùÀ̶ó´Â ±â¼ú·Î ³ª¸¸ÀÇ »ó»óÀ» ±¸ÇöÇÏ´Â °Í¿¡ °ü½ÉÀÌ ¸¹¾Ò´Ù. ±× ¶§¹®ÀÎÁö Áö±ÝÀº À¥ ÇÁ·ÐÆ®¿£µå °³¹ßÀÚ·Î ÀÏÇÏ°í ÀÖ´Ù. ÇöÀç´Â À¥¿¡¸¸ Á¾¼ÓµÇ´Â °Íº¸´Ù ´Ù¾çÇÑ Ç÷§ÆûÀ¸·Î ±¸ÇöÇÏ´Â °Í(¾Û, À©µµ¿ì µî)¿¡ °ü½ÉÀÌ ÀÖÀ¸¸ç ÁÖ·ÂÀ¸·Î ÇÏ°í ÀÖ´Â ¾ð¾î´Â JavaScriptÀÌ´Ù.

¸ñÂ÷

ÁöÀºÀÌÀÇ ¸»
±âȹÀÚÀÇ ¸»
ÀÏ·¯µÎ±â

1Àå ¼îÇθô ¼­ºñ½º ¿Ï¼ºº» ¹Ì¸®º¸±â
1.1 VSCode ¼³Ä¡Çϱâ
1.2 ÆÐÅ°Áö ¸Å´ÏÀú ÀÌÇØÇϱâ
1.3.1 ÆÐÅ°Áö¸¦ ÃʱâÈ­ÇÏ°í Á¾¼Ó¼º Ãß°¡Çϱâ
1.3 Yarn »ç¿ëÇϱâ
1.3.2 ÆÐÅ°Áö ¾÷µ¥ÀÌÆ®Çϱâ
1.4.1 ±ê ¼³Ä¡
1.4 ±ê ÀÌÇØÇÏ°í »ç¿ëÇϱâ
1.4.2 ±ê ¸í·É¾î
1.5 ±êÇãºê·Î ¼îÇθô ¾Û Á¢¼ÓÇϱâ
1.6 ¿Ï¼ºº» ÇÁ·ÎÁ§Æ® »ìÆ캸±â
1.7 ¿Ï¼ºµÈ ¼îÇθô ¾Û µÑ·¯º¸±â

2Àå ÇÁ·ÎÁ§Æ® ÁغñÇϱâ
2.1 °£´ÜÇÑ ¸®¾×Æ® ÇÁ·ÎÁ§Æ® ¸¸µé±â
2.2 ¸ðµâ ºÐ¸®Çؼ­ º¸±â
2.3 Create-React-App ÇÁ·ÎÁ§Æ® ¼³Á¤Çϱâ
2.4 API ¼­¹ö ¼³Á¤Çϱâ
2.5 Ŭ¶óÀ̾ðÆ® »çÀÌµå ·»´õ¸µ
2.6 API ¼­¹ö Å×½ºÆ®Çϱâ

[ÇÔ²² ÇغÁ¿ä 2-1] ±âº»ÀûÀÎ HTML ÆäÀÌÁö ¸¸µé±â
[ÇÔ²² ÇغÁ¿ä 2-2] React¿Í ReactDOMÀ» CDNÀ¸·Î ºÒ·¯¿À´Â HTML ÆÄÀÏ
[ÇÔ²² ÇغÁ¿ä 2-3] ¸®¾×Æ® ÄÚµå ÀÛ¼ºÇϱâ
[ÇÔ²² ÇغÁ¿ä 2-4] ¹Ùº§·Î º¯°æÇÑ Àüü HTML ÆÄÀÏ
[ÇÔ²² ÇغÁ¿ä 2-5] ·çÆ® µð·ºÅ͸®¿¡ App.js ÆÄÀÏ ¸¸µé±â
[ÇÔ²² ÇغÁ¿ä 2-6] App.js¸¦ ºÒ·¯¿À´Â index.html
[ÇÔ²² ÇغÁ¿ä 2-7] A.js¿Í B.js¸¦ ºÒ·¯¿À´Â index.html
[ÇÔ²² ÇغÁ¿ä 2-8] ¸ðµâÀ» ºÐ¸®Çϱâ À§ÇÑ App.js ¸¸µé±â
[ÇÔ²² ÇغÁ¿ä 2-9] ±âº»À¸·Î Á¦°øµÇ´Â App.tsx ¼öÁ¤Çϱâ
[ÇÔ²² ÇغÁ¿ä 2-10] App ÄÄÆ÷³ÍÆ®¸¦ »ç¿ëÇϱâ À§ÇÑ index.tsx ¼öÁ¤Çϱâ
[ÇÔ²² ÇغÁ¿ä 2-11] index.html ¼öÁ¤Çϱâ

3Àå ¸®¾×Æ®´Â ¾î¶»°Ô µ¿ÀÛÇϴ°¡
3.1 À¥ ¼­ºñ½ºÀÇ Àü¹ÝÀûÀÎ È帧
3.2 ÄÄÆ÷³ÍÆ®¸¦ ¾Ë¾Æº¸ÀÚ(with JSX)
3.3 Props: ÄÄÆ÷³ÍÆ® °£ µ¥ÀÌÅÍ Àü´ÞÀ» À§ÇÑ °´Ã¼
3.4 ¸®¾×Æ® ¾ÛÀÇ ·»´õ¸µ ¹æ½Ä(with State)
3.5 ÈÅ °³³ä°ú È°¿ë¹ý

[ÇÔ²² ÇغÁ¿ä 3-1] µ¥ÀÌÅÍ È帧À» ÆľÇÇϱâ À§ÇÑ ¸®¾×Æ® App ÄÄÆ÷³ÍÆ®
[ÇÔ²² ÇغÁ¿ä 3-2] °¡»ó DOMÀ» »ç¿ëÇÏ´Â ÀÌÀ¯¸¦ ¾Ë¾Æº¸±â À§ÇØ App ÄÄÆ÷³ÍÆ® ¼öÁ¤Çϱâ

4Àå ¼îÇθô ±âº» ±¸Á¶ ¸¸µé¾îº¸±â
4.1 ¿ä±¸»çÇ× »ìÆ캸±â
4.2 »óÇ° ¸ñ·Ï ·»´õ¸µÇϱâ
4.3 »óÇ° Ãß°¡Çϱâ
4.4 »óÇ° ¸ñ·Ï »èÁ¦Çϱâ
4.5 »óÇ° ¸ñ·Ï ¼öÁ¤Çϱâ
4.6 React-Router-Dom ¼³Á¤Çϱâ
4.7 »óÇ° »ó¼¼ ÆäÀÌÁö ³ª´©±â
4.8 Context API ¼³Á¤Çϱâ
4.9 µ¿±â¿Í ºñµ¿±â ÀÌÇØÇϱâ
4.10 API ¼­¹ö¿¡¼­ »óÇ° ¸ñ·Ï °¡Á®¿À±â
4.11 »óÇ° »ó¼¼ µ¥ÀÌÅÍ °¡Á®¿À±â
4.12 »óÇ° ¼öÁ¤°ú »èÁ¦ ¿äûÇϱâ

[ÇÔ²² ÇغÁ¿ä 4-1] interface Å°¿öµå·Î ProdutTypeÀ» ¸¸µé°í products º¯¼ö ¼±¾ðÇϱâ
[ÇÔ²² ÇغÁ¿ä 4-2] products º¯¼öÀÇ Ãʱ갪À¸·Î °¡Â¥ µ¥ÀÌÅÍ ÀÔ·ÂÇϱâ
[ÇÔ²² ÇغÁ¿ä 4-3] products »óŸ¦ È­¸é¿¡ Ç¥½ÃÇϱâ(¿À·ù ¹öÀü)
[ÇÔ²² ÇغÁ¿ä 4-4] products »óŸ¦ È­¸é¿¡ Ç¥½ÃÇϱâ(¿À·ù ¼öÁ¤ ¹öÀü)
[ÇÔ²² ÇغÁ¿ä 4-5] products »óŸ¦ È­¸é¿¡ Ç¥½ÃÇϱâ(map ¸Þ¼­µå »ç¿ëÇϱâ)
[ÇÔ²² ÇغÁ¿ä 4-6] products »óŸ¦ È­¸é¿¡ Ç¥½ÃÇϱâ(°æ°í ¹®±¸ ÇØ°áÇϱâ)
[ÇÔ²² ÇغÁ¿ä 4-7] »óÇ° ¸ñ·ÏÀ» ·»´õ¸µÇÏ´Â ÃÖÁ¾ App.js ÄÚµå
[ÇÔ²² ÇغÁ¿ä 4-8] »óÇ° Ãß°¡Çϱ⸦ À§ÇÑ form ÀÛ¼ºÇϱâ
[ÇÔ²² ÇغÁ¿ä 4-9] ¡®»óÇ° Ãß°¡Çϱ⡯¸¦ À§ÇÑ form ÀÛ¼ºÇϱâ(¼öÁ¤ ¹öÀü)
[ÇÔ²² ÇغÁ¿ä 4-10] »óź¯°æÇÔ¼ö(useState)¸¦ È°¿ëÇÏ¿© µ¥ÀÌÅ͸¦ ´Ù½Ã ¼±¾ðÇϱâ
[ÇÔ²² ÇغÁ¿ä 4-11] »óÇ° µ¥ÀÌÅ͸¦ º¯°æ½ÃÅ°°í È°¿ëÇϱâ(onChange ¼Ó¼º)
[ÇÔ²² ÇغÁ¿ä 4-12] »óÇ° µ¥ÀÌÅ͸¦ º¯°æ½ÃÅ°°í È°¿ëÇϱâ(onChange À̺¥Æ® Çڵ鷯 »ç¿ëÇϱâ)
[ÇÔ²² ÇغÁ¿ä 4-13] »óÇ° µ¥ÀÌÅ͸¦ products state¿¡ Ãß°¡Çϱâ(ŸÀÔ ¿À·ù ¹öÀü)
[ÇÔ²² ÇغÁ¿ä 4-14] »óÇ° µ¥ÀÌÅ͸¦ products state¿¡ Ãß°¡Çϱâ(µÎ ¹ø° »óÇ° µ¥ÀÌÅÍ Ãß°¡ºÎÅÍ ¿À·ù ¹ß»ý ¹öÀü)
[ÇÔ²² ÇغÁ¿ä 4-15] »óÇ° µ¥ÀÌÅ͸¦ products state¿¡ Ãß°¡Çϱâ(useRef ÇÔ¼ö¸¦ È°¿ëÇÑ ¿À·ù ¼öÁ¤ ¹öÀü)
[ÇÔ²² ÇغÁ¿ä 4-16] »óÇ° Ãß°¡Çϱâ ÃÖÁ¾ ¼Ò½º
[ÇÔ²² ÇغÁ¿ä 4-17] »óÇ° ·»´õ¸µ ·ÎÁ÷ ¼öÁ¤Çϱâ(product¸¦ ºÐÇØÇÏ¿© ´ÜÀÏ ¼Ó¼º°ªÀ¸·Î Á¢±ÙÇÒ ¼ö ÀÖ°Ô ¼öÁ¤)
[ÇÔ²² ÇغÁ¿ä 4-18] [»èÁ¦Çϱâ] ¹öÆ°ÀÇ onClick ÇÔ¼ö ÀÛ¼ºÇϱâ
[ÇÔ²² ÇغÁ¿ä 4-19] [¼öÁ¤Çϱâ] ¹öÆ° ·»´õ¸µÇϱâ
[ÇÔ²² ÇغÁ¿ä 4-20] ÄÄÆ÷³ÍÆ®¸¦ ºÐ¸®ÇÏ¿© ³»ºÎ »óŸ¦ ¼±¾ð °¡´ÉÇÑ ÇüÅ·ΠÀÛ¼ºÇϱâ(ProductItem ÄÄÆ÷³ÍÆ® ¸¸µé±â)
[ÇÔ²² ÇغÁ¿ä 4-21] ÄÄÆ÷³ÍÆ®¸¦ ºÐ¸®ÇÑ ÈÄ ±âÁ¸ ·ÎÁ÷ÀÌ µ¿ÀÛÇÏÁö ¾Ê´Â ¹®Á¦ ¼öÁ¤Çϱâ(onDelete ÇÔ¼ö·Î Çൿ À§ÀÓÇϱâ)
[ÇÔ²² ÇغÁ¿ä 4-22] isEditMode°¡ trueÀÏ ¶§ Á¶°ÇºÎ Form ·»´õ¸µÀ¸·Î ¼öÁ¤Çϱâ
[ÇÔ²² ÇغÁ¿ä 4-23] »óÇ° ¼öÁ¤ form¿¡¼­ ÀÛ¼ºÇÑ »óÇ° Á¤º¸¸¦ °´Ã¼·Î Àü´ÞÇÏ´Â ¹æ½ÄÀ¸·Î ¼öÁ¤Çϱâ
[ÇÔ²² ÇغÁ¿ä 4-24] »óÇ° Á¤º¸ ¼öÁ¤ÀÌ ¿Ï·áµÇµµ·Ï App ÄÄÆ÷³ÍÆ®ÀÇ handleUpdate ÇÔ¼ö ¼öÁ¤Çϱâ
[ÇÔ²² ÇغÁ¿ä 4-25] »óÇ° ¸ñ·Ï ¼öÁ¤Çϱâ ÃÖÁ¾ ÄÚµå
[ÇÔ²² ÇغÁ¿ä 4-26] index.tsx¿¡¼­ BrowserRouter ÄÄÆ÷³ÍÆ®·Î App ÄÄÆ÷³ÍÆ® °¨½ÎÁÖ±â
[ÇÔ²² ÇغÁ¿ä 4-27] HomePage.tsx¸¦ ¸¸µé°í App.tsx¿¡¼­ ¼Ò½º º¹»çÇϱâ
[ÇÔ²² ÇغÁ¿ä 4-28] index.ts¸¦ ¸¸µé°í HomPage ÄÄÆ÷³ÍÆ® ³»º¸³»±â
[ÇÔ²² ÇغÁ¿ä 4-29] App.tsx ÄÄÆ÷³ÍÆ® ¼öÁ¤Çϱâ
[ÇÔ²² ÇغÁ¿ä 4-30] »óÇ° »ó¼¼ ÆäÀÌÁö ¸¸µé±â(ProductPage.tsx)
[ÇÔ²² ÇغÁ¿ä 4-31] index.ts¸¦ ÅëÇØ ³»º¸³»±â
[ÇÔ²² ÇغÁ¿ä 4-32] App.tsx¿¡ »ó¼¼ ÆäÀÌÁö Ãß°¡Çϱâ
[ÇÔ²² ÇغÁ¿ä 4-33] path ¼Ó¼ºÀ» ¾Ë¾Æº¸±â À§ÇØ »ó¼¼ ÆäÀÌÁö ¼öÁ¤Çϱâ
[ÇÔ²² ÇغÁ¿ä 4-34] µ¥ÀÌÅ͸¦ ´ãÀ» ¼ö ÀÖ´Â °ø°£À¸·Î Context ¸¸µé±â(ProductContext.tsx)
[ÇÔ²² ÇغÁ¿ä 4-35] ÇÏÀ§ ÄÄÆ÷³ÍÆ®¿¡ µ¥ÀÌÅÍ Àü¼ÛÀ» À§ÇÑ Provider Á¤ÀÇÇϱâ
[ÇÔ²² ÇغÁ¿ä 4-36] µ¥ÀÌÅÍ »ç¿ëÀ» À§ÇØ Consumer¸¦ ¼±¾ðÇÏ°í, useContext ÇÔ¼ö·Î Á¢±ÙÇϱâ
[ÇÔ²² ÇغÁ¿ä 4-37] Context¸¦ Àû¿ëÇÑ ÃÖÁ¾ ÄÚµå
[ÇÔ²² ÇغÁ¿ä 4-38] ÀÛ¼ºÇÑ Context »ç¿ëÇϱâ(ProductPage.tsx ¼öÁ¤)
[ÇÔ²² ÇغÁ¿ä 4-39] ÀÛ¼ºÇÑ Context »ç¿ëÇغ¸±â 2(index.tsx ¼öÁ¤)
[ÇÔ²² ÇغÁ¿ä 4-40] URL ¸Å°³º¯¼ö id °ªÀ» ¹Þ¾Æ »óÇ° Á¤º¸¸¦ º¸¿©ÁÖ´Â ·ÎÁ÷(ProductPage.tsx ¼öÁ¤)
[ÇÔ²² ÇغÁ¿ä 4-41] URL ¸Å°³º¯¼ö id °ªÀ» ¹Þ¾Æ »óÇ° Á¤º¸¸¦ º¸¿©ÁÖ´Â ·ÎÁ÷(undefined ½Ã¿¡ UX¸¦ °í·ÁÇÑ ¹®ÀÚ¿­ Ãß°¡)
[ÇÔ²² ÇغÁ¿ä 4-42] ¸ÞÀÎ ÆäÀÌÁö¿¡¼­ »óÇ° »ó¼¼ ÆäÀÌÁö·Î À̵¿Çϱâ
[ÇÔ²² ÇغÁ¿ä 4-43] »óÇ°À» »õ·Î Ãß°¡ÇÏ°í ÇØ´ç »óÇ°À¸·Î À̵¿ÇÒ ¶§ ¾Æ¹«·± °á°ú °ªÀÌ ³ªÅ¸³ªÁö ¾Ê´Â Çö»ó ÇØ°áÇϱâ(ŸÀÔ ¿À·ù ¹ß»ý)
[ÇÔ²² ÇغÁ¿ä 4-44] »óÇ°À» »õ·Î Ãß°¡ÇÏ°í ÇØ´ç »óÇ°À¸·Î À̵¿ÇÒ ¶§ ¾Æ¹«·± °á°ú °ªÀÌ ³ªÅ¸³ªÁö ¾Ê´Â Çö»ó ÇØ°áÇϱâ(ŸÀÔ ¿À·ù ¼öÁ¤)
[ÇÔ²² ÇغÁ¿ä 4-45] ¸ÞÀÎ ÆäÀÌÁöÀÇ productÀ» Context·Î ±¸ÇöÇϱâ 1(HomePage.tsx ¼öÁ¤Çϱâ)
[ÇÔ²² ÇغÁ¿ä 4-46] ¸ÞÀÎ ÆäÀÌÁöÀÇ productÀ» Context·Î ±¸ÇöÇϱâ 2(ProductPage.tsx ¼öÁ¤Çϱâ)
[ÇÔ²² ÇغÁ¿ä 4-47] fetch ÇÔ¼ö·Î »óÇ° ¸ñ·Ï µ¥ÀÌÅÍ °¡Á®¿À±â(HomePage.tsx)
[ÇÔ²² ÇغÁ¿ä 4-48] ÇÁ·Ï½Ã ¼­¹ö ¼³Á¤Çϱâ(client/package.json ¼öÁ¤Çϱâ)
[ÇÔ²² ÇغÁ¿ä 4-49] µ¿±âÈ­ ÀÛ¾÷À» À§ÇÑ fetch ÇÔ¼ö ¼öÁ¤Çϱâ
[ÇÔ²² ÇغÁ¿ä 4-50] ÇÊ¿ä ¾ø°Ô µÈ ±âÁ¸ÀÇ Context Á¦°ÅÇϱâ 1(index.ts¿¡¼­ ProductProvider Á¦°ÅÇϱâ)
[ÇÔ²² ÇغÁ¿ä 4-51] ÇÊ¿ä ¾ø°Ô µÈ ±âÁ¸ÀÇ ÄÁÅؽºÆ® Á¦°ÅÇϱâ 2(Homepage.tsx¿¡¼­ product ¼³Á¤ ÄÚµå º¯°æÇϱâ)
[ÇÔ²² ÇغÁ¿ä 4-52] »óÇ° »ó¼¼ µ¥ÀÌÅÍ °¡Á®¿À±â(ProductPage.tsx ¼öÁ¤Çϱâ)
[ÇÔ²² ÇغÁ¿ä 4-53] »óÇ° Ãß°¡Çϱâ(Homepage.tsxÀÇ handleCreate ÇÔ¼ö ¼öÁ¤Çϱâ)
[ÇÔ²² ÇغÁ¿ä 4-54] »óÇ° »èÁ¦Çϱâ(Homepage.tsxÀÇ handleDelete ÇÔ¼ö ¼öÁ¤Çϱâ)
[ÇÔ²² ÇغÁ¿ä 4-55] »óÇ° ¼öÁ¤Çϱâ(Homepage.tsxÀÇ handleUpdate ÇÔ¼ö ¼öÁ¤Çϱâ)

5Àå ¼îÇθô ¼³°è¸¦ ¾î¶»°Ô Çϸé ÁÁÀ»±î(feat. ÁÁÀº ¾ÆÅ°ÅØó¶õ)
5.1 ¸®¾×Æ® ÄÄÆ÷³ÍÆ®, ²À ³ª´²¾ß ÇÒ±î
5.2 µ¥ÀÌÅ͸¦ ±â¹ÝÀ¸·Î ÄÄÆ÷³ÍÆ® ºÐ¸®Çϱâ
5.3 ¿ªÇÒ Áß½ÉÀ¸·Î ÄÄÆ÷³ÍÆ® ºÐ¸®Çϱâ
5.4 Àüü ±¸Á¶´Â ¾î¶»°Ô ©±î
5.5 Áö±Ý±îÁöÀÇ ±¸Á¶¸¦ ¼öÁ¤ÇÏÀÚ

[ÇÔ²² »ìÆìºÁ¿ä 5-1] Cart¿¡¼­ µ¥ÀÌÅ͸¦ ºÐ¸®Çϱâ ÀüÀÇ ÄÚµå(´Ü¼ø ¿¹½Ã ÄÚµå)
[ÇÔ²² »ìÆìºÁ¿ä 5-2] µ¥ÀÌÅÍ ±â¹ÝÀ¸·Î ÄÄÆ÷³ÍÆ® ºÐ¸®Çϱâ(´Ü¼ø ¿¹½Ã ÄÚµå)
[ÇÔ²² »ìÆìºÁ¿ä 5-3] ¿ªÇÒ Áß½ÉÀ¸·Î ÄÄÆ÷³ÍÆ® ºÐ¸®Çϱâ 1(´Ü¼ø ¿¹½Ã ÄÚµå)
[ÇÔ²² »ìÆìºÁ¿ä 5-4] ¿ªÇÒ Áß½ÉÀ¸·Î ÄÄÆ÷³ÍÆ® ºÐ¸®Çϱâ 2(´Ü¼ø ¿¹½Ã ÄÚµå)
[ÇÔ²² »ìÆìºÁ¿ä 5-5] Cart ÄÄÆ÷³ÍÆ® ±¸Çö(´Ü¼ø ¿¹½Ã ÄÚµå)
[ÇÔ²² »ìÆìºÁ¿ä 5-6] CartList ÄÄÆ÷³ÍÆ® ±¸Çö(´Ü¼ø ¿¹½Ã ÄÚµå)
[ÇÔ²² »ìÆìºÁ¿ä 5-7] CarItem ÄÄÆ÷³ÍÆ® ±¸Çö(´Ü¼ø ¿¹½Ã ÄÚµå)
[ÇÔ²² »ìÆìºÁ¿ä 5-8] CartIncreaseButton ÄÄÆ÷³ÍÆ® ±¸Çö(´Ü¼ø ¿¹½Ã ÄÚµå)
[ÇÔ²² »ìÆìºÁ¿ä 5-9] CartDecreaseButton ÄÄÆ÷³ÍÆ® ±¸Çö(´Ü¼ø ¿¹½Ã ÄÚµå)
[ÇÔ²² »ìÆìºÁ¿ä 5-10] CartDeleteButton ÄÄÆ÷³ÍÆ® ±¸Çö(´Ü¼ø ¿¹½Ã ÄÚµå)
[ÇÔ²² »ìÆìºÁ¿ä 5-11] ºÐ¸®Çϱâ Àü HomePage ÄÚµå

[ÇÔ²² ÇغÁ¿ä 5-1] HomePage¿¡¼­ ProductList¸¦ ºÐ¸®Çؼ­ ±¸ÇöÇϱâ
[ÇÔ²² ÇغÁ¿ä 5-2] ŸÀÔÀ» ÇÑ ¹ø¿¡ ¸ð¾Æ¼­ °ü¸®ÇÏ´Â Æú´õ¸¦ ¸¸µé°í ºÒ·¯¿À±â(types Æú´õ¿Í index.ts)
[ÇÔ²² ÇغÁ¿ä 5-3] ŸÀÔ º°Äªµéµµ ¸ðµâó·³ ÁöÁ¤Çϱâ(ProductItemÀÌ Á¤ÀǵǾî ÀÖÁö ¾ÊÀº »óÅÂ)
[ÇÔ²² ÇغÁ¿ä 5-4] ProductItem ÄÄÆ÷³ÍÆ® ºÐ¸®Çϱâ
[ÇÔ²² ÇغÁ¿ä 5-5] index.ts¸¦ ÅëÇØ ³»º¸³»±â
[ÇÔ²² ÇغÁ¿ä 5-6] ProductList ÄÄÆ÷³ÍÆ®¿¡¼­ ProductItem ºÒ·¯¿À±â
[ÇÔ²² ÇغÁ¿ä 5-7] ºÐ¸®µÈ ÄÄÆ÷³ÍÆ® ±â¹ÝÀ¸·Î HomePage ¼öÁ¤Çϱâ
[ÇÔ²² ÇغÁ¿ä 5-8] ProductCreateForm ÀÛ¼ºÇϱâ
[ÇÔ²² ÇغÁ¿ä 5-9] ProductCreateForm ³»º¸³»±â
[ÇÔ²² ÇغÁ¿ä 5-10] ProductCreatePage ÀÛ¼ºÇϱâ
[ÇÔ²² ÇغÁ¿ä 5-11] index.ts¸¦ ÅëÇØ ³»º¸³»±â
[ÇÔ²² ÇغÁ¿ä 5-12] Page ÄÄÆ÷³ÍÆ®¸¦ Route¿¡ Ãß°¡Çϱâ(App.tsx ¼öÁ¤)

6Àå MUIUI ÄÄÆ÷³ÍÆ®¸¦ È°¿ëÇÏ¿© ¼îÇθô °³¼±Çϱâ
6.1 MUI µµÀÔÇϱâ
6.2 CSS Á¤±ÔÈ­
6.3 MUI ±×¸®µå
6.4 ·¹À̾ƿô ±¸ÇöÇϱâ
6.5 ·Îµù ±â´É Ãß°¡Çϱâ
6.6 »óÇ° »ý¼º ÄÄÆ÷³ÍÆ®¸¦ MUI·Î ¸¶À̱׷¹À̼ÇÇϱâ
6.7 API¸¦ ÀÌ¿ëÇÑ ¼¶³×ÀÏ ¾÷·Îµå ±¸ÇöÇϱâ
6.8 ¼¶³×ÀÏÀÌ ³ª¿ÀÁö ¾Ê´Â ¹®Á¦¸¦ ¼öÁ¤Çϱâ
6.9 »óÇ° ¸ñ·ÏÀ» MUI·Î ¸¶À̱׷¹À̼ÇÇϱâ
6.10 »óÇ° ¾ÆÀÌÅÛÀ» MUI·Î ¸¶À̱׷¹À̼ÇÇϱâ
6.11 »óÇ° »ó¼¼º¸±â ÆäÀÌÁö¸¦ MUI·Î ¸¶À̱׷¹À̼ÇÇϱâ
6.12 ±¸¸Å ÆäÀÌÁö ±¸ÇöÇϱâ
6.13 »óÇ° ±¸¸Å ¸ð´Þ ±¸ÇöÇϱâ
6.14 »óÇ° »ý¼º ¸ð´Þ ±¸ÇöÇϱâ
6.15 Àå¹Ù±¸´Ï ÆäÀÌÁö ±¸ÇöÇϱâ
6.16 404 ÆäÀÌÁö ±¸ÇöÇϱâ

[ÇÔ²² ÇغÁ¿ä 6-1] MUI Å×½ºÆ® ¿¹Á¦ Áغñ
[ÇÔ²² ÇغÁ¿ä 6-2] MUI Å×½ºÆ®: ½ºÅ¸ÀÏÀÌ ÀÔÇôÁø ¹öÆ°
[ÇÔ²² ÇغÁ¿ä 6-3] ¿É¼ÇÀ» È°¿ëÇÏ¿© ´Ù¾çÇÑ ¹öÆ°ÀÇ ¸ð¾çÀ¸·Î ·»´õ¸µ Çغ¸±â
[ÇÔ²² ÇغÁ¿ä 6-4] MUI¸¦ Àü¿ª °ø°£¿¡¼­ ½ÇÇàÇϱâ
[ÇÔ²² ÇغÁ¿ä 6-5] ±×¸®µå ÄÄÆ÷³ÍÆ® È°¿ë ¿¹Á¦
[ÇÔ²² ÇغÁ¿ä 6-6] À¥ÀÇ ±âÃÊÀûÀÎ ±¸Á¶¸¦ ±×¸®µå·Î ¸¸µé¾îº¸´Â ¿¹Á¦
[ÇÔ²² ÇغÁ¿ä 6-7] Å×½ºÆ®¿ëÀ¸·Î º¯°æÇß´ø ¾Û ÄÄÆ÷³ÍÆ®¸¦ ¿ø·¡´ë·Î µÇµ¹¸®±â
[ÇÔ²² ÇغÁ¿ä 6-8] ·¹À̾ƿô ÀÛ¼ºÇϱâ(Layout.tsx)
[ÇÔ²² ÇغÁ¿ä 6-9] Layout ÄÄÆ÷³ÍÆ® ³»º¸³»±â(index.ts)
[ÇÔ²² ÇغÁ¿ä 6-10] Layout ÄÄÆ÷³ÍÆ®¸¦ App ÄÄÆÛ³ÍÆ® »ó´Ü¿¡ ¸ðµÎ ¹­±â
[ÇÔ²² ÇغÁ¿ä 6-11] °¢ ¹öÆ°¿¡ À̺¥Æ® Çڵ鷯¸¦ ¿¬°áÇÏ¿© ÆäÀÌÁö¸¦ À̵¿ÇÏ´Â ·ÎÁ÷ Ãß°¡Çϱâ
[ÇÔ²² ÇغÁ¿ä 6-12] HomePage¿¡¼­ Àӽ÷ΠÇØ´ç ÄÄÆ÷³ÍÆ® ºÒ·¯¿À±â
[ÇÔ²² ÇغÁ¿ä 6-13] HomePage ÄÄÆ÷³ÍÆ® ¿ø»óº¹±¸
[ÇÔ²² ÇغÁ¿ä 6-14] ·ÎµùÀÌ true, false¿¡ µû¶ó ´Þ¶óÁö´Â ·»´õ¸µ ±¸ÇöÇϱâ
[ÇÔ²² ÇغÁ¿ä 6-15] CreateIconÀ» ºÒ·¯¿Í¼­ Layout¿¡ [Ãß°¡Çϱâ] ¹öÆ° ¹Ù²Ù±â
[ÇÔ²² ÇغÁ¿ä 6-16] ¼îÇθô´Ù¿î UI·Î ¼öÁ¤Çϱâ(ProductCreateForm.tsx)
[ÇÔ²² ÇغÁ¿ä 6-17] ¼¶³×ÀÏ ¾÷·Î´õ ÄÄÆ÷³ÍÆ® ±¸ÇöÇϱâ 1(ThumbnailUploader.tsx)
[ÇÔ²² ÇغÁ¿ä 6-18] ¼¶³×ÀÏ ¾÷·Î´õ ÄÄÆ÷³ÍÆ® ±¸ÇöÇϱâ 2(ThumbnailUploader.tsx)
[ÇÔ²² ÇغÁ¿ä 6-19] ThumbnailUploader ÄÄÆ÷³ÍÆ® ³»º¸³»±â
[ÇÔ²² ÇغÁ¿ä 6-20] ProductCreateForm ¼öÁ¤Çϱâ
[ÇÔ²² ÇغÁ¿ä 6-21] ThumbnailUploader ÄÄÆ÷³ÍÆ®¿¡¼­ input¿¡ hidden ¼Ó¼º ºÎ¿©Çϱâ
[ÇÔ²² ÇغÁ¿ä 6-22] ¼¶³×ÀÏ ¾÷·Î´õ ÄÄÆ÷³ÍÆ® ±¸ÇöÇϱâ 3(ThumbnailUploader.tsx)
[ÇÔ²² ÇغÁ¿ä 6-23] ÆÄÀÏ ¼±Åà ÈÄ ¼¶³×ÀÏÀ» È­¸é¿¡¼­ Àӽ÷Π·»´õ¸µÇÏ´Â ·ÎÁ÷(ThumbnailUploader.tsx)
[ÇÔ²² ÇغÁ¿ä 6-24] 2´Ü°è ¼¶³×ÀÏ ¿äû ±¸ÇöÇϱâ(ProductCreateForm.tsx)
[ÇÔ²² ÇغÁ¿ä 6-25] thumbnail ¼Ó¼º Ãß°¡¿¡ µû¸¥ ProductType ¾÷µ¥ÀÌÆ®
[ÇÔ²² ÇغÁ¿ä 6-26] thumbnail ¼Ó¼º Ãß°¡¿¡ µû¸¥ ProductItem ¾÷µ¥ÀÌÆ®
[ÇÔ²² ÇغÁ¿ä 6-27] »óÇ° ¸ñ·Ï µðÀÚÀÎ 1: Grid ÄÄÆ÷³ÍÆ®·Î ProductItem ¹­¾îÁÖ±â(ProductList.tsx)
[ÇÔ²² ÇغÁ¿ä 6-28] »óÇ° ¸ñ·Ï µðÀÚÀÎ 2: Grid ÄÄÆ÷³ÍÆ®·Î ProductItem ¹­¾îÁÖ±â(ProductItem.tsx)
[ÇÔ²² ÇغÁ¿ä 6-29] »óÇ° ¾ÆÀÌÅÛ¿¡ ½ºÅ¸ÀÏ ÁöÁ¤Çϱâ(ProductItem.tsx)
[ÇÔ²² ÇغÁ¿ä 6-30] ¿À·ù Á¦°Å¸¦ À§ÇÑ ProductList ÄÄÆ÷³ÍÆ® ¼öÁ¤Çϱâ
[ÇÔ²² ÇغÁ¿ä 6-31] App.tsx¿¡¼­ »óÇ° »ó¼¼ ÆäÀÌÁö ÁÖ¼Ò ¼öÁ¤Çϱâ
[ÇÔ²² ÇغÁ¿ä 6-32] ProductPage UI ¼öÁ¤Çϱâ
[ÇÔ²² ÇغÁ¿ä 6-33] ±¸¸Å ÆäÀÌÁö ±¸ÇöÇϱâ(PurchasePage.tsx)
[ÇÔ²² ÇغÁ¿ä 6-34] PurchasePage ÄÄÆ÷³ÍÆ® ³»º¸³»±â
[ÇÔ²² ÇغÁ¿ä 6-35] PurchasePage¸¦ Router¿Í ¿¬°áÇϱâ
[ÇÔ²² ÇغÁ¿ä 6-36] form Äڵ带 º°µµ ÄÄÆ÷³ÍÆ®·Î ºÐ¸®Çϱâ(PurchaseForm.tsx)
[ÇÔ²² ÇغÁ¿ä 6-37] PurchaseForm ÄÄÆ÷³ÍÆ® ³»º¸³»±â
[ÇÔ²² ÇغÁ¿ä 6-38] PurchasePage ¼öÁ¤Çϱâ
[ÇÔ²² ÇغÁ¿ä 6-39] createProductId¿Í isModalOpen »óŸ¦ ÇÔ²² ±¸ÇöÇÑ ÄÚµå
[ÇÔ²² ÇغÁ¿ä 6-40] handlePushProductPage¿¡ ´ëÇÑ ±¸Çö ÄÚµå
[ÇÔ²² ÇغÁ¿ä 6-41] Àå¹Ù±¸´Ï ÆäÀÌÁö ¸¸µé±â(CartPage.tsx)
[ÇÔ²² ÇغÁ¿ä 6-42] Àå¹Ù±¸´Ï ÆäÀÌÁö ³»º¸³»±â
[ÇÔ²² ÇغÁ¿ä 6-43] Àå¹Ù±¸´Ï ÆäÀÌÁö ²Ù¹Ì±â
[ÇÔ²² ÇغÁ¿ä 6-44] Àå¹Ù±¸´Ï ÆäÀÌÁö¸¦ Router¿¡ ¿¬°áÇϱâ
[ÇÔ²² ÇغÁ¿ä 6-45] [Àå¹Ù±¸´Ï ´ã±â] ¹öÆ°À» Ŭ¸¯Çϸé ÄíÅ°¿¡ »óÇ°°ªÀ» Ãß°¡ÇÏ´Â ·ÎÁ÷ ÀÛ¼ºÇϱâ
[ÇÔ²² ÇغÁ¿ä 6-46] MUI¸¦ ÀÌ¿ëÇÏ¿© Àå¹Ù±¸´Ï ÆäÀÌÁö ½ºÅ¸ÀÏ ²Ù¹Ì±â(CartPage.tsx)
[ÇÔ²² ÇغÁ¿ä 6-47] Àå¹Ù±¸´Ï ¾ÆÀÌÅÛ ÄÄÆ÷³ÍÆ® Äڵ带 ÀÛ¼ºÇÏ°í Àå¹Ù±¸´Ï ÆäÀÌÁö ¿Ï¼ºÇϱâ
[ÇÔ²² ÇغÁ¿ä 6-48] CartItem ÄÄÆ÷³ÍÆ® ³»º¸³»±â
[ÇÔ²² ÇغÁ¿ä 6-49] Àå¹Ù±¸´Ï ÆäÀÌÁö(CartPage)ÀÇ ÃÖÁ¾ ÄÚµå
[ÇÔ²² ÇغÁ¿ä 6-50] 404 ÆäÀÌÁö ¸¸µé±â(NotFoundPage.tsx)
[ÇÔ²² ÇغÁ¿ä 6-51] 404 ÆäÀÌÁö ¸¸µé±â ÄÄÆ÷³ÍÆ® ³»º¸³»±â
[ÇÔ²² ÇغÁ¿ä 6-52] 404 ÆäÀÌÁö¸¦ ¿ÍÀϵåÄ«µå¿¡ ¿¬°áÇϱâ(App.tsx)
[ÇÔ²² »ìÆìºÁ¿ä 6-1] ±âÁ¸¿¡ ±¸ÇöÇÑ ProductPage
[ÇÔ²² »ìÆìºÁ¿ä 6-2] ¡´Route¡µ ÄÄÆ÷³ÍÆ® µ¿ÀÛ ¿¹½Ã

7Àå ÄÚµå ¸®ºä: °³¼±Á¡ ã±â¿Í ´õ ³ªÀº ¼­ºñ½º ¸¸µé±â
7.1 Àå¹Ù±¸´Ï °ü·Ã ÄíÅ° Á¤º¸¸¦ ½±°Ô °ü¸®Çϱâ À§ÇÑ ÈÅ ¸¸µé±â
7.2 ID ±â¹ÝÀ¸·Î º¯°æÇؼ­ ÄíÅ° ¿ë·® ¹®Á¦ ÇØ°áÇϱâ
7.3 Àå¹Ù±¸´Ï°¡ Áߺ¹µÇ´Â Çö»ó ¸·±â
7.4 HTTP ¿äû ºÎºÐÀ» Axios·Î º¯°æÇϱâ
7.5 useAsync ÇÔ¼ö ¸¸µé±â
7.6 concurrently¸¦ »ç¿ëÇÏ¿© Ŭ¶óÀ̾ðÆ®¿Í ¼­¹ö¸¦ µ¿½Ã¿¡ ½ÇÇàÇϱâ

[ÇÔ²² ÇغÁ¿ä 7-1] ÄíÅ°¸¦ ÀçÈ°¿ëÇÏ´Â ÈÅ ¸¸µé±â(useCart.ts)
[ÇÔ²² ÇغÁ¿ä 7-2] ¸¸µç ÈÅ ³»º¸³»±â
[ÇÔ²² ÇغÁ¿ä 7-3] ÈÅÀ» È°¿ëÇϱâ À§ÇØ »óÇ° ÆäÀÌÁö ¼öÁ¤Çϱâ(ProductPage.tsx)
[ÇÔ²² ÇغÁ¿ä 7-4] ÈÅÀ» È°¿ëÇϱâ À§ÇØ Àå¹Ù±¸´Ï ÆäÀÌÁö ¼öÁ¤Çϱâ(CartPage.ts)
[»ý°¢ ÇغÁ¿ä 7-1] useCart ÈÅ¿¡¼­ ID ±â¹Ý »óÇ° ·ÎÁ÷À¸·Î ÀúÀå ¹æ½ÄÀ» ¼öÁ¤Çϱâ
[ÇÔ²² ÇغÁ¿ä 7-5] productIds º¯¼ý°ª ÁöÁ¤Çϱâ
[ÇÔ²² ÇغÁ¿ä 7-6] Àå¹Ù±¸´Ï Á¤º¸¸¦ °¡Á®¿À±â À§ÇÑ ÄÚµå ÀÛ¼ºÇϱâ
[ÇÔ²² ÇغÁ¿ä 7-7] useCart ÈÅÀ» ´Ù¸¥ Äڵ忡 ¹Ý¿µÇϱâ(ProductPage.tsx)
[ÇÔ²² ÇغÁ¿ä 7-8] useCart ÈÅÀ» ´Ù¸¥ Äڵ忡 ¹Ý¿µÇϱâ(CartPage.tsx)
[ÇÔ²² ÇغÁ¿ä 7-9] Àå¹Ù±¸´Ï¿¡¼­ Áߺ¹µÇ´Â Çö»ó ¸·±â ÄÚµå(useCart ¼öÁ¤ ÄÚµå)
[ÇÔ²² ÇغÁ¿ä 7-10] useCart¸¦ »ç¿ëÇÏ´Â ÄÄÆ÷³ÍÆ® ¼öÁ¤Çϱâ(CartPage.tsx)
[ÇÔ²² ÇغÁ¿ä 7-11] API¸¦ ÇÑ°÷¿¡ ¹­¾î¼­ °ü¸®Çϱâ
[ÇÔ²² ÇغÁ¿ä 7-12] API¸¦ ÇÑ°÷¿¡ ¹­¾î¼­ °ü¸®Çϱâ(Axios¸¦ È°¿ëÇÑ ¹öÀü)
[ÇÔ²² ÇغÁ¿ä 7-13] API¸¦ ÇÑ °÷¿¡ ¹­¾î¼­ °ü¸®Çϱâ(Axios¸¦ È°¿ëÇÑ ¹öÀü) - ProductPage ¼öÁ¤Çϱâ
[ÇÔ²² ÇغÁ¿ä 7-14] API¸¦ ÇÑ °÷¿¡ ¹­¾î¼­ °ü¸®Çϱâ (Axios¸¦ È°¿ëÇÑ ¹öÀü) - PurchasePage ¼öÁ¤Çϱâ
[ÇÔ²² ÇغÁ¿ä 7-15] API¸¦ ÇÑ °÷¿¡ ¹­¾î¼­ °ü¸®Çϱâ(Axios¸¦ È°¿ëÇÑ ¹öÀü) - ProductList ¼öÁ¤Çϱâ
[ÇÔ²² ÇغÁ¿ä 7-16] API¸¦ ÇÑ °÷¿¡ ¹­¾î¼­ °ü¸®Çϱâ(Axios¸¦ È°¿ëÇÑ ¹öÀü) - ProductCreateForm ¼öÁ¤Çϱâ
[ÇÔ²² ÇغÁ¿ä 7-17] API¸¦ ÇÑ °÷¿¡ ¹­¾î¼­ °ü¸®Çϱâ(Axios¸¦ È°¿ëÇÑ ¹öÀü) - useCart ÇÔ¼ö ¼öÁ¤Çϱâ
[ÇÔ²² ÇغÁ¿ä 7-18] useAsync ÈÅ ¸¸µé±â
[ÇÔ²² ÇغÁ¿ä 7-19] ±âÁ¸ÀÇ ·¹°Å½Ã Äڵ带 useAsync·Î Àû¿ëÇϱâ(ProductList.tsx ¼öÁ¤)
[ÇÔ²² ÇغÁ¿ä 7-20] »óÇ° µ¥ÀÌÅ͸¦ °¡Á®¿À´Â ºÎºÐ¿¡ useAsync µµÀÔÇÒ ¶§ ¼öÁ¤/»èÁ¦ ½Ã ¹®Á¦ ÇØ°áÇϱâ
[ÇÔ²² ÇغÁ¿ä 7-21] »óÇ° ÆäÀÌÁö¿¡ useAsync Àû¿ëÇϱâ
[ÇÔ²² ÇغÁ¿ä 7-22] ¼¶³×ÀÏ ¾÷·Îµå¸¦ À§ÇØ useAsync ¼öÁ¤Çϱâ
[ÇÔ²² ÇغÁ¿ä 7-23] ProductCreateForm ¼öÁ¤Çϱâ
[ÇÔ²² ÇغÁ¿ä 7-24] PurchasePage ¼öÁ¤Çϱâ

[ÇÔ²² »ìÆìºÁ¿ä 7-1] Àå¹Ù±¸´Ï¿¡¼­ Áߺ¹µÇ´Â Çö»ó ¸·±â ÄÚµå(useCartÀÇ ±âÁ¸ ÄÚµå)
[ÇÔ²² »ìÆìºÁ¿ä 7-2] È®À强À» À§ÇÑ action °´Ã¼ »ç¿ë
[ÇÔ²² »ìÆìºÁ¿ä 7-3] useAsync ÈÅ »ìÆ캸±â

¿¡Çʷα×
ã¾Æº¸±â