ÄÄÆ÷³ÍÆ®°¡ ºÎǰÀÌ µÇ·Á¸é Çҿ뼺À» ³ô¿©¾ß ÇÑ´Ù. °íÁ¤µÈ Á¤º¸¸¸ º¸¿©ÁÖ°í
Á¤ÇØÁø´ë·Î¸¸ µ¿ÀÛÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó »ç¿ëÇÏ´Â Ãø¿¡¼ ¿øÇϴ´ë·Î ¹Ù²Ü ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ÀÌ·± ÀåÄ¡¸¦ ¼Ó¼ºÀ̶ó°í
ºÎ¸£¸ç HTML ű׵µ ¼Ó¼ºÀ» °¡Áø´Ù.
<a href="...">
<img src="...">
¶È°°Àº a ÅÂ±×¶óµµ href ¼Ó¼ºÀÌ
°¡¸®Å°´Â ÁÖ¼Ò¿¡ µû¶ó Ŭ¸¯ÇÒ ¶§ À̵¿ÇÒ °÷ÀÌ ´Þ¶óÁø´Ù. img ű׵µ
src ¼Ó¼º¿¡ µû¶ó º¸¿©ÁÙ À̹ÌÁö¸¦ °áÁ¤Çϰí À̹ÌÁöÀÇ Å©±â¸¦ °Á¦·Î ÁöÁ¤ÇÏ´Â ¼Ó¼ºµµ ÀÖ´Ù. ¼Ó¼ºÀÌ
¸¹À»¼ö·Ï ű×ÀÇ È°¿ë¼ºÀÌ ³ô¾ÆÁø´Ù.
ÄÄÆ÷³ÍÆ®µµ ¸¶Âù°¡Áö·Î È£ÃâÃø¿¡¼ ¿øÇÏ´Â °ªÀ» Àü´ÞÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ¼ºÀûÇ¥
ÄÄÆ÷³ÍÆ®ÀÎ AppÀº Ãâ·ÂÀÌ Á¤ÇØÁ® ÀÖ¾î Ç×»ó °°Àº ¸ð¾çÀÌ´Ù.
score º¯¼ö¸¦ Ãâ·ÂÇÏÁö¸¸ ÇÔ¼ö ¼±µÎ¿¡ ¼±¾ðµÈ »ó¼öÀÏ »ÓÀÌ´Ù. ¼ºÀûÀ» º¸¿© ÁÖ´Â ÄÄÆ÷³ÍÆ®¶ó¸é
ÃÖ¼ÒÇÑ ´©±¸ÀÇ ¼ºÀûÀ̰í Á¡¼ö´Â ¸î Á¡ÀÎÁö Àü´Þ¹Þ¾Æ¾ß ÇÑ´Ù.
È£ÃâÃø¿¡¼ ÄÄÆ÷³ÍÆ®·Î Àü´ÞÇÏ´Â Àμö¸¦ props¶ó°í Çϴµ¥ Àμö´Â
µü Çϳª¹Û¿¡ ¾øÁö¸¸ ¿©·¯ ¼Ó¼ºÀ» ÇѲ¨¹ø¿¡ Æ÷ÇÔÇÏ´Â °´Ã¼ÀÌ´Ù. È£ÃâÃøÀÌ Àü´ÞÇÑ °³º° Àμö¸¦ propsÀÇ ¸â¹ö·Î ÂüÁ¶ÇÑ´Ù.
¿¹Á¦ : namescore
function
ScoreBoard(props) {
return (
<>
<h2>¼ºÀûÇ¥</h2>
<p>{props.name}´ÔÀÇ Á¡¼ö´Â {props.score}ÀÔ´Ï´Ù.</p>
</>
)
}
function
App() {
return (
<>
<ScoreBoard
name = "È«±æµ¿" score = "89"/>
</>
);
}
ù ¿¹Á¦´Â ¿©·¯ °¡Áö ¹®¹ýÀ» ¼³¸íÇϱâ À§ÇÑ ¿ä¼Ò°¡ ÀÖ¾ú´Âµ¥ ÀÌÁ¦ ±âº»À» ÀÌÇØÇßÀ¸´Ï °¡±ÞÀû °£·«ÇÏ°Ô ÀÛ¼ºÇÏÀÚ. ¸íĪ ±ÔÄ¢À» ¼³¸íÇϱâ À§ÇØ ÀÛ¼ºÇÑ className, id ¼Ó¼ºÀº
»©°í <div> ´ë½Å <> ºó ű׸¦
¾´´Ù. Á¡¼ö´Â ¼Ó¼ºÀ¸·Î ¹ÞÀ¸¹Ç·Î score º¯¼öµµ ÇÊ¿ä ¾ø´Ù.
ÄÄÆ÷³ÍÆ®´Â °íÀ¯ÀÇ À̸§À» °¡Áö´Âµ¥ ¼ºÀûÇ¥ ÄÄÆ÷³ÍÆ®¿¡´Â ScoreBoard¶ó´Â
¸ÚÁø À̸§À» ºÙ¿´´Ù. AppÀº ÆäÀÌÁöÀÇ ·çÆ®¶ó À¢¸¸Çϸé À̸§À» À¯ÁöÇÏ´Â °ÍÀÌ ÁÁ´Ù. ÄÄÆ÷³ÍÆ® À̸§Àº ¹Ýµå½Ã ´ë¹®ÀÚ·Î ½ÃÀÛÇØ¾ß ÇÑ´Ù´Â ±ÔÄ¢ÀÌ ÀÖ´Ù. ÄÄÆ÷³ÍÆ®
À̸§À» scoreBoard·Î ¹Ù²Û ÈÄ ½ÇÇàÇÏ¸é ´ÙÀ½ °æ°í°¡ ¹ß»ýÇϸç ȸ鿡 ¾Æ¹« °Íµµ ³ªÅ¸³ªÁö ¾Ê´Â´Ù.
Warning: <scoreBoard /> is using incorrect
casing. Use PascalCase for React components, or lowercase for HTML elements.
´ë¼Ò¹®ÀÚ ±¸¼ºÀÌ Æ²·ÈÀ¸¸ç ÄÄÆ÷³ÍÆ®¿¡ ´ëÇØ¼´Â ÆÄ½ºÄ®ÄÉÀ̽º¸¦ »ç¿ëÇ϶ó°í µÇ¾î ÀÖ´Ù. À̸§¿¡ ´ëÇØ ÀÌ·± ±î´Ù·Î¿î ±ÔÄ¢À» °¿äÇÏ´Â ÀÌÀ¯´Â HTML ű׿Í
±¸ºÐÇϱâ À§ÇؼÀÌ´Ù. ´ÙÀ½ »ùÇà ¹®¼¸¦ º¸ÀÚ.
<h2>±â¸»°í»ç</h2>
<ScoreBoard name = "È«±æµ¿" score = "89"/>
<p>°øºÎ Á» ¿½ÉÈ÷ ÇØ</p>
¸®¾×Æ® ÄÄÆ÷³ÍÆ®µµ HTML ÅÂ±×¿Í °°Àº Çü½ÄÀ¸·Î »ç¿ëÇϴµ¥ ¼¯¿© ÀÖÀ»
¶§ ´ë¼Ò¹®ÀÚ¸¸ ºÁµµ ÀÚ°ÝÀ» ¹Ù·Î ÆÇ´ÜÇÒ ¼ö ÀÖ´Ù. ÄÄÆ÷³ÍÆ®ÀÇ Á¾·ù¸¦ ½±°Ô ±¸ºÐÇÒ ¼ö ÀÖÀ¸¸é °¡µ¶¼ºÀÌ
Çâ»óµÇ¹Ç·Î ÀÌ·± ±ÔÄ¢À» °Á¦ÇÑ´Ù. ½ÃÀÛ¸¸ ´ë¹®ÀÚÀÌ¸é µÇ°í µÎ¹øÂ° ÀÌÈĺÎÅÍ´Â ÀÚÀ¯·Ó°Ô ¾µ ¼ö ÀÖ¾î SCOREBOARD¶ó°í ÇØµµ µÇÁö¸¸ ´«¿¡ Àß µé¾î¿ÀÁö ¾ÊÀ¸¹Ç·Î ´ë¼Ò¹®ÀÚ¸¦ ÀûÀýÈ÷ ¼¯¾î ¾²´Â °ÍÀÌ ÁÁ´Ù.
À̸§ ºÙÀ̴°űîÁö °£¼·Çϴ°¡ ½Í°ÚÁö¸¸ ½ÇÁ¦·Î <button>°ú <Button>ÀÌ ´Ù¸£°í <form>°ú <Form>ÀÌ ´Ù¸¥ ¿¹°¡ ÀÖ´Ù. ÀÌ ±ÔÄ¢ÀÌ ¾øÀ¸¸é À̸§À»
MyButton, MyForm µûÀ§·Î Áö¾î¾ß ÇϹǷΠ´õ ºÒÆíÇØÁø´Ù.
ÇÔ¼ö ÄÄÆ÷³ÍÆ®ÀÇ Àμö´Â µü Çϳª¹Û¿¡ ¾øÁö¸¸ À̸§°ú °ªÀÇ ½ÖÀ¸·Î µÈ °´Ã¼¿©¼ »ç½Ç»ó °³¼ö Á¦ÇÑÀÌ ¾ø´Ù. ÀμöÀÇ À̸§Àº ¾Æ¹«·¡µµ »ó°ü ¾ø¾î a³ª b·Î ½áµµ µÇÁö¸¸ ¼Ó¼ºÀÇ ÁýÇÕÀ̶ó´Â Àǹ̿¡ ¸Â°Ô °ü½ÀÀûÀ¸·Î props·Î
Áþ´Â´Ù. props Àμö¾È¿¡ ÄÄÆ÷³ÍÆ®ÀÇ ¼Ó¼ºÀÌ µé¾î ÀÖÀ¸¸ç È£ÃâÃø¿¡¼´Â HTML ű×ÀÇ ¼Ó¼ºÀ» ÁöÁ¤ÇÏµí ¼Ó¼º°ªÀ» Àü´ÞÇÑ´Ù.
<ScoreBoard name = "È«±æµ¿" score = "89"/>
<ScoreBoard name = "È«±æµ¿", score = "89"/> //
¿¡·¯
ÄÄÆ÷³ÍÆ® À̸§ ´ÙÀ½¿¡ ¼Ó¼º="°ª" Çü½ÄÀ¸·Î Àü´ÞÇ쵂 ¼Ó¼ºÀÌ ¿©·¯ °³ÀÏ ¶§´Â °ø¹éÀ¸·Î ±¸ºÐÇÑ´Ù. ÄÄÆ÷³ÍÆ®´Â
ÇÔ¼öÀÇ ÇüŸ¦ ¶ç°í ÀÖÁö¸¸ È£ÃâÃø¿¡¼´Â ÅÂ±× ÇüŸ¦ ÃëÇÑ´Ù. ÇÔ¼ö·Î Àü´ÞÇÏ´Â Àμö°¡ ¾Æ´Ï°í ű×ÀÇ ¼Ó¼ºÀ̹ǷÎ
ÄÞ¸¶³ª ¼¼¹ÌÄÝ·ÐÀÌ ¾Æ´ÔÀ» À¯ÀÇÇÏÀÚ. HTML ű׿¡ ¼Ó¼ºÀ» ÁÖµí Àü´ÞÇÏ¸é µÈ´Ù.
¼Ó¼ºÀÌ props °´Ã¼·Î ¹¿© Àü´ÞµÇ¹Ç·Î JSX ³»¿¡¼ ¼Ó¼ºÀ» ÂüÁ¶ÇÒ ¶§´Â propsÀÇ ¸â¹ö¸¦ Àд {props.Àμö¸í} Çü½ÄÀ¸·Î Àû´Â´Ù.
<p> ¹®´Ü ¾È¿¡¼ {props.name}, {props.score}À» Àоî
¹®ÀÚ¿¾È¿¡ »ðÀÔÇÏ¿© Ãâ·ÂÇß´Ù.

¸®¾×Æ®´Â ÄÄÆ÷³ÍÆ® È£Ãâ¹®ÀÇ ¼Ó¼ºÀ» °´Ã¼·Î ¹¾î Àü´ÞÇÑ´Ù. È£ÃâÃøÀº
ÀÌ °´Ã¼¸¦ props Àμö·Î ¹ÞÀº ÈÄ ÇÊ¿äÇÑ °÷¿¡¼ ¸â¹ö¸¦ ÀÐ¾î »ç¿ëÇÑ´Ù.

Çü½Ä»ó ÄÄÆ÷³ÍÆ®·Î Àü´ÞµÇ´Â Àμö´Â props °´Ã¼ µü ÇϳªÁö¸¸ °´Ã¼¿¡´Â
¼ö¸¹Àº ¸â¹ö°¡ Æ÷ÇԵȴÙ. ÀÌÁ¦ ScoreBoard ÄÄÆ÷³ÍÆ®´Â
Àü´Þ¹Þ´Â Àμö¿¡ µû¶ó Ãâ·Â ¸ð¾çÀÌ ´Þ¶óÁø´Ù.
<ScoreBoard name = "À̼ø½Å" score = "92"/>
<ScoreBoard name = "À¯°ü¼ø" score = "85"/>
ScoreBoard ÄÄÆ÷³ÍÆ®ÀÇ È°¿ë¼ºÀÌ ³ô¾ÆÁ³´Ù. ½ºÅ¸Àϳª µ¿ÀÛ¿¡ ´ëÇÑ ¿É¼Ç±îÁöµµ ¼Ó¼ºÀ¸·Î Àü´ÞÇÏ¸é ´õ ´Ù¾çÇÑ ÇüÅ·ΠȰ¿ëÇÒ ¼ö ÀÖ´Ù.
ű×ÀÇ ¼Ó¼ºÀº Ç×»ó ¹®ÀÚ¿ÀÌ¸ç µû¿ÈÇ¥·Î °¨½Î Àü´ÞÇÑ´Ù. HTML ¹®¼¿¡¼´Â
°ªÀÇ Å¸ÀÔÀÌ Á¤¼ö¶óµµ <td colspan="2"
rowspan="2"> ½ÄÀ¸·Î µû¿ÈÇ¥¸¦ ¾²´Â°Ô ¿øÄ¢ÀÌ´Ù. ¼ýÀÚ·Î
½áµµ ºÁ ÁÖÁö¸¸ XHTML ±ÔÁ¤»óÀº µû¿ÈÇ¥°¡ ²À ÇÊ¿äÇÏ´Ù.
Á¡¼ö´Â Á¤¼öÇüÀÌÁö¸¸ score = 89·Î ÀûÀ¸¸é ¿¡·¯ÀÌ¸ç ¹®ÀÚ¿·Î
Àü´ÞÇØ¾ß ÇÑ´Ù. ´Ü¼øÈ÷ Ãâ·Â¸¸ ÇÑ´Ù¸é "89"·Î
Àü´ÞÇØµµ º° ¹®Á¦ ¾ø´Ù. ±×·¯³ª ÀÌ °ªÀ» ¿¬»ê¿¡ »ç¿ëÇÑ´Ù¸é ¾ê±â°¡ ´Þ¶óÁø´Ù. ¿¹¸¦ µé¾î ¸ðµç ¼ºÀû¿¡ º¸³Ê½º Á¡¼ö 2Á¡À» ´õ ÁÖ±â·Î Çß´Ù°í ÇØ
º¸ÀÚ. score¿¡ 2¸¸ ´õÇÏ¸é µÈ´Ù.
<p>{props.name}´ÔÀÇ Á¡¼ö´Â {props.score + 2}ÀÔ´Ï´Ù.</p>
ÀÌ·¯¸é 89Á¡¿¡ ´ëÇØ 2Á¡À»
´õÇØ 91Á¡ÀÌ ³ª¿Ã °Å °°Áö¸¸ score°¡ ¹®ÀÚ¿À̹ǷΠ¿¬°áµÇ¾î 892Á¡ÀÌ µÇ¾î ¹ö¸°´Ù. ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ·Á¸é ´ÙÀ½ µÑ Áß ÇϳªÀÇ
¹æ¹ýÀ» ½á¾ß ÇÑ´Ù.
1.¹®ÀÚ¿·Î ¹ÞÀº Á¡¼ö¸¦ Á¤¼ö·Î ¹Ù²Û ÈÄ ¿¬»êÇÑ´Ù. {Number(props.score) + 2}·Î ¾²¸é 91Á¡ÀÌ µÈ´Ù.
2.È£ÃâºÎ¿¡¼ Àü´ÞÇÒ ¶§ºÎÅÍ Á¤¼ö·Î Àü´ÞÇÑ´Ù. À̶§´Â Àμö¸¦ { } °ýÈ£·Î °¨½Î score = {89}·Î Ç¥±âÇÑ´Ù.
function
ScoreBoard(props) {
return (
<>
<h2>¼ºÀûÇ¥</h2>
<p>{props.name}´ÔÀÇ Á¡¼ö´Â {props.score + 2}ÀÔ´Ï´Ù.</p>
</>
)
}
function
App() {
return (
<>
<ScoreBoard
name = "È«±æµ¿" score = {89}/>
</>
);
}
"È«±æµ¿"À̳ª
89´Â ÀÚ¹Ù½ºÅ©¸³Æ®ÀÇ ¸®ÅÍ·²À̸ç JSX ±¸¹® ¾È¿¡¼ ½ºÅ©¸³Æ®¸¦
¾²·Á¸é { }°ýÈ£·Î °¨½Î´Â°Ô ¿øÄ¢ÀÌ´Ù. ¹®ÀÚ¿ ¼Ó¼ºµµ {"È«±æµ¿"}À¸·Î ¾²´Â°Ô ¸ÂÁö¸¸ ¹ø°Å·Î¿ì¹Ç·Î Ưº°È÷
¿¹¿Ü¸¦ ÀÎÁ¤ÇÏ¿© µû¿ÈÇ¥¸¸ °¨½Îµµ µÈ´Ù.
ÄÄÆ÷³ÍÆ®ÀÇ ¼Ó¼ºÀº HTMLÀÇ ¼Ó¼º°ú »ç¿ë ¹æ¹ýÀ̳ª ÇüŰ¡ ºñ½ÁÇÏ´Ù. ±×·¯³ª HTMLÀÇ ¼Ó¼ºÀÌ ´Ü¼øÇÑ °ªÀε¥ ºñÇØ ÄÄÆ÷³ÍÆ®ÀÇ ¼Ó¼ºÀº °´Ã¼, ¹è¿µµ °¡´ÉÇÏ¸ç ½ÉÁö¾î ÇÔ¼ö±îÁö Àü´ÞÇÒ ¼öµµ ÀÖ´Ù. { } °ýÈ£¾È¿¡´Â
ÀÚ¹Ù½ºÅ©¸³Æ®ÀÇ ¸ðµç Ç¥Çö½ÄÀÌ ´Ù ¿Ã ¼ö ÀÖ´Ù. ´ÙÀ½ ÄÚµå´Â nameÀ»
¼º°ú À̸§ °´Ã¼·Î, Á¡¼ö´Â 3°ú¸ñ¿¡ ´ëÇÑ ¹è¿·Î Àü´ÞÇÑ´Ù.
¿¹Á¦ : propsobj
function
ScoreBoard(props) {
return (
<>
<h2>¼ºÀûÇ¥</h2>
<p>{props.name.sung}{props.name.irum}´ÔÀÇ Á¡¼ö´Â
{props.score[0]}, {props.score[1]}, {props.score[2]}ÀÔ´Ï´Ù.</p>
</>
)
}
function
App() {
return (
<>
<ScoreBoard
name = {{sung:"È«", irum:"±æµ¿"}} score = {[89, 75, 92]} />
</>
);
}
¼º°ú À̸§À» ºÙ¿©¼ name °´Ã¼¸¦ ¸¸µé°í Á¡¼ö´Â ÄÞ¸¶·Î ±¸ºÐÇÏ¿©
³ª¿Çß´Ù. ÀÚ¹Ù½ºÅ©¸³Æ®¿¡¼ °´Ã¼´Â { } °ýÈ£·Î, ¹è¿Àº [ ] °ýÈ£·Î Ç¥ÇöÇÑ´Ù.
JSX´Â ÀÚ¹Ù½ºÅ©¸³Æ® Äڵ带 { } °ýÈ£·Î ¹À¸¹Ç·Î °ýÈ£³¢¸®ÀÇ Áßø °ü°è°¡ º¹ÀâÇÏ´Ù. ¾î¶² °ýÈ£°¡ ¹«½¼ ¿ªÇÒÀ» ÇÏ´ÂÁö Àß ±¸ºÐÇØ¾ß ÇÑ´Ù.

propsÀÇ ¸â¹öÀÎ name °´Ã¼ÀÇ
Á¤º¸¸¦ ÀÐÀ¸·Á¸é props.name.sung ½ÄÀ¸·Î . ¿¬»êÀÚ¸¦
¿¬°ÅǪ »ç¿ëÇÑ´Ù. ¹è¿Àº [÷ÀÚ] ½ÄÀ¸·Î ¿ä¼Ò¸¦ ÀÐµÇ ¿¹Á¦¿¡¼´Â ¿ä¼Ò°¡ ¼¼ °³ ¹Û¿¡ ¾ø¾î Á÷Á¢ Àоú´Ù. ¿ä¼Ò°¡
¾ÆÁÖ ¸¹À¸¸é map µîÀÇ ¹Ýº¹ ÇÔ¼ö·Î ·çÇÁ¸¦ µ¹¸®¸ç Àд´Ù.
props Àμö´Â °´Ã¼¿©¼ ¾ó¸¶µçÁö ¸¹Àº ¼Ó¼ºÀ» Æ÷ÇÔÇÒ ¼ö ÀÖ´Ù. ±×·±µ¥ Àμö¸¦ ÀÐÀ» ¶§¸¶´Ù ¸Å¹ø props. À» ¾Õ¿¡ ºÙÀÌ´Â °ÍÀº
±ÍÂúÀº ÀÏÀÌ´Ù. ÀÌ·² ¶§´Â ºÐÇØ ´ëÀÔ ¹®¹ýÀ» »ç¿ëÇÏ¿© Àμö¸¦ °³º° º¯¼ö¿¡ ´ëÀÔ¹Þ¾Æ ¾²¸é Æí¸®ÇÏ´Ù.
¿¹Á¦ : splitprops
function
ScoreBoard({name, score}) {
return (
<>
<h2>¼ºÀûÇ¥</h2>
<p>{name}´ÔÀÇ
Á¡¼ö´Â {score}ÀÔ´Ï´Ù.</p>
</>
)
}
function
App() {
return (
<>
<ScoreBoard
name = "È«±æµ¿" score = "89"/>
</>
);
}
Àμö ¸ñ·ÏÀÇ { } °ýÈ£¾È¿¡ °´Ã¼ÀÇ ¸â¹ö¸¦ ´ëÀÔ¹ÞÀ» º¯¼ö¸íÀ» ³ª¿Çϰí
º»¹®¿¡¼´Â À̸§¸¸À¸·Î Àμö¸¦ ÂüÁ¶ÇÑ´Ù. ºÐÇØ ´ëÀÔ ¹®¹ýÀº ÀÚ¹Ù½ºÅ©¸³Æ®
ES6ºÎÅÍ µµÀÔµÈ °ÍÀÌ´Ù. Á» ¾î·Á¿ö º¸Àδٸé
namescore ¿¹Á¦ÀÇ ÇÔ¼ö µµÀԺθ¦ ¾à°£ ¹Ù²ã º¸ÀÚ.
function ScoreBoard(props) {
let
name = props.name
let
score = props.score
return (
<>
<h2>¼ºÀûÇ¥</h2>
<p>{name}´ÔÀÇ
Á¡¼ö´Â {score}ÀÔ´Ï´Ù.</p>
....
props °´Ã¼·Î Àμö¸¦ ¹ÞÀº ÈÄ ÇÔ¼ö ¼±µÎ¿¡¼ °´Ã¼ÀÇ ¸â¹ö¸¦ °°Àº
À̸§ÀÇ name, score °³º° º¯¼ö¿¡ ´ëÀÔ¹Þ¾Ò´Ù. ±×·¯´Ï
»ç¿ëÇÒ ¶§´Â {name}, {score}·Î ¹Ù·Î ÀÐÀ» ¼ö ÀÖ´Ù. ÀÌ
ÀýÂ÷¸¦ °£¼ÒÈÇÑ °ÍÀÌ ºÐÇØ ´ëÀÔ ¹®¹ýÀÌ¸ç µÎ º¯¼ö¿¡ ´ëÇÑ ´ëÀÔÀ» Çϳª·Î ÇÕÄ¥ ¼ö ÀÖ´Ù.
function ScoreBoard(props) {
let
{name, score} = props
Àμö Àü´ÞÀº ´ëÀÔÀε¥ °´Ã¼¸¦ Àü´Þ¹Þ¾Æ ºÐÇØÇÏ´Â °Í°ú Àμö ¸ñ·Ï¿¡ ¾Æ¿¹ °³º° º¯¼ö¸¦ ½á Àü´Þ¹ÞÀ¸¸é¼ ºÐÇØÇÏ´Â °Í°ú
°°´Ù. ±× °á°ú°¡ ¹Ù·Î ¿¹Á¦ÀÇ ÄÚµåÀÌ´Ù.
function ScoreBoard({name, score}) {
ÄÄÆ÷³ÍÆ®ÀÇ ¼Ó¼ºÀº °³¼ö¿¡ »ó°ü¾øÀÌ ¿©·¯ °³ ¾µ ¼ö ÀÖ°í JSX´Â ¸ðµç
¼Ó¼ºÀ» props °´Ã¼¿¡ ¹¾î Àü´ÞÇÑ´Ù. ÄÄÆ÷³ÍÆ®´Â ¹¾î
³õÀº ¼Ó¼º°ªÀ» props.¼Ó¼º ½ÄÀ¸·Î ÀÐÀ» ¼öµµ ÀÖÁö¸¸ °³º° º¯¼ö·Î ÇØÃ¼ÇØ¼ ÀÐÀ» ¼öµµ ÀÖ´Ù.
¾îÂ÷ÇÇ °´Ã¼¸¦ ¹Þ¾Æ ¸â¹ö¸¦ ÀÐÀ¸³ª °¢ ¸â¹ö¸¦ º¯¼ö·Î ¹Þ¾Æ ÀÐÀ¸³ª °á°ú´Â °°´Ù.
±×·¯³ª ¾à°£ÀÇ »ç¼ÒÇÑ Â÷À̰¡ Àִµ¥ props °´Ã¼·Î ¹ÞÀ¸¸é ¼Ó¼ºÀÌ Àбâ Àü¿ëÀÌÁö¸¸ º°µµÀÇ
º¯¼ö·Î ºÐÇØÇØ¼ ¹ÞÀ¸¸é Àбâ Àü¿ëÀÌ ¾Æ´Ï¾î¼ °ªÀ» ¹Ù²Ü ¼ö ÀÖ´Ù.
|
function ScoreBoard(props) {
props.name = "Á¤¿ì¼º" |
function ScoreBoard({name, score}) {
name = "Á¤¿ì¼º" |
|
¿¡·¯ |
°¡´É |
props·Î ¹ÞÀº Àμö´Â »ó¼ö¿©¼ Àб⸸ ÇÏ´Â °ÍÀÌ ¿øÄ¢ÀûÀÌ´Ù. ºÐÇØÇØ¼ º¯¼ö·Î ¹ÞÀ¸¸é º¯°æÇÒ ¼ö´Â ÀÖÁö¸¸ Àμö´Â ¿ø·¡ ÀԷ¿ëÀ̹ǷΠÀü´Þ¹ÞÀº Á¤º¸¸¦ ÀÓÀÇ·Î ¹Ù²Ù´Â °ÍÀº ¹Ù¶÷Á÷ÇÏÁö
¾Ê´Ù. ±×·¡¼ Àμö¸¦ ´ëÀÔ¹Þ´Â º¯¼ö´Â const·Î ¼±¾ðÇÒ
°ÍÀ» ±ÇÀåÇÑ´Ù.
ºÐÇØ ´ëÀÔ ±â¹ýÀ» ¾²¸é µðÆúÆ® Àμöµµ ¾µ ¼ö ÀÖ´Ù. props¿¡ ´ëÀÀµÇ´Â
¸â¹ö°¡ ¾øÀ¸¸é µðÆúÆ® Àμö¸¦ Àû¿ëÇÑ´Ù. ¿¹¸¦ µé¾î score Àμö¸¦
Àü´ÞÇÏÁö ¾ÊÀ¸¸é 50Á¡À» ±âº» Á¡¼ö·Î Áشٰí ÇØ º¸ÀÚ.
function
ScoreBoard({name, score = 50}) {
return (
<>
<h2>¼ºÀûÇ¥</h2>
<p>{name}´ÔÀÇ
Á¡¼ö´Â {score}ÀÔ´Ï´Ù.</p>
</>
)
}
function
App() {
return (
<>
<ScoreBoard
name = "È«±æµ¿"/>
</>
);
}
score¿¡ µðÆúÆ®°ª 50À»
ÁöÁ¤Çϰí È£ÃâÇÒ ¶§ score ¼Ó¼ºÀ» »ý·«ÇÏ¸é ±âº»°ª 50ÀÌ
Àû¿ëµÈ´Ù. ¹°·Ð ¸í½ÃÀûÀÎ Á¡¼ö¸¦ Àü´ÞÇÏ¸é ±× °ªÀ» »ç¿ëÇÑ´Ù. ±âº»
¼Ó¼ºÀº undefined ÀÏ ¶§¸¸ Àû¿ëµÇ¸ç nullÀ̳ª 0Àº ±âº»°ªÀÌ Àû¿ëµÇÁö ¾ÊÀ½À» ÁÖÀÇÇÏÀÚ. ´ÙÀ½°ú °°ÀÌ Àü´ÞÇÏ¸é ±×³É
ºó°ªÀ¸·Î ³ªÅ¸³´Ù.
<ScoreBoard name = "È«±æµ¿" score = {null}/>
nullÀº °ªÀÌ ¾øÀ½À» ¸í½ÃÀûÀ¸·Î ÁöÁ¤ÇÑ °ÍÀÌÁö °ªÀ» Á¤ÀÇÇÏÁö ¾ÊÀº
°Í°ú´Â ´Ù¸£´Ù. µðÆúÆ® ¼Ó¼ºÀº ¾Æ¿¹ ÁöÁ¤ÀÌ ¾øÀ» ¶§¸¸ Àû¿ëµÈ´Ù. Àμö¸¦
ºÐÇØÇÏÁö ¾Ê°í props °´Ã¼¸¦ ¹ÞÀ» ¶§´Â ÄÄÆ÷³ÍÆ®ÀÇ defaultProps
¼Ó¼º¿¡ µðÆúÆ®°ªÀÇ ¸ñ·ÏÀ» °´Ã¼·Î Á¤ÀÇÇÏ´Â ¹æ¹ýµµ ÀÖ´Ù.
function
ScoreBoard(props) {
return (
<>
<h2>¼ºÀûÇ¥</h2>
<p>{props.name}´ÔÀÇ Á¡¼ö´Â {props.score}ÀÔ´Ï´Ù.</p>
</>
)
}
ScoreBoard.defaultProps
= {
score : 50
}
function
App() {
return (
<>
<ScoreBoard
name = "È«±æµ¿"/>
</>
);
}
props¸¦ Àü´ÞÇÒ ¶§ Àμö°¡ Àü´ÞµÇÁö ¾ÊÀ¸¸é defaultProps °´Ã¼¿¡¼ Àμö À̸§°ú °°Àº ¸â¹ö¸¦ ã¾Æ ±âº»°ªÀ» Àû¿ëÇÑ´Ù.
¿¹Àü¿¡´Â ÀÌ ±â¹ýÀÌ ÅëÇߴµ¥ ÈÅÀ» µµÀÔÇÑ ÀÌÈĺÎÅÍ´Â ±ÇÀåÇÏÁö ¾Ê´Â´Ù. ÇÔ¼öÇü ÄÄÆ÷³ÍÆ®¿¡´Â
µ¿ÀÛÇÏÁö ¾ÊÀ¸¸ç Ŭ·¡½ºÇü ÄÄÆ÷³ÍÆ®¿¡´Â ¾ÆÁ÷µµ ÀÌ ¹æ¹ýÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.
¸®¾×Æ®ÀÇ º¯È¶ó±âº¸´Ù´Â ES6¿¡ ±âº»°ª ¹®¹ýÀÌ µµÀÔµÈ ÈĺÎÅÍ´Â ¾µ
Çʿ䰡 ¾ø¾îÁ³´Ù°í º¸´Â °ÍÀÌ Å¸´çÇÏ´Ù. ¾ÕÀ¸·Î ÀÌ·± Äڵ带 ¾µ ÇÊ¿ä´Â ¾øÁö¸¸ °ú°Å¿¡ ÀÌ ¹®¹ýÀ» »ç¿ëÇÑ
¼Ò½º°¡ ÀÖ¾î Á¸À縸 ¾Ë¾Æ µÎ¸é µÈ´Ù.
ÀÚ¹Ù½ºÅ©¸³Æ®´Â ¿ø·¡ ŸÀÔ¿¡ ´ëÇÑ Á¤Àǰ¡ ¾ø´Â ¾ð¾îÀÌ´Ù. ±×·¯´Ù º¸´Ï
¾Õ¼ ¿¹¸¦ º¸ÀÎ Á¤¼ö Àü´Þ ¿¹¿¡¼ ¹®ÀÚ¿À» À߸ø Àü´ÞÇØµµ ÀÌ»ó¾øÀÌ ½ÇÇàµÇ¾î ¹ö¸°´Ù.
<p>{props.name}´ÔÀÇ Á¡¼ö´Â {props.score + 2}ÀÔ´Ï´Ù.</p>
<ScoreBoard name = "È«±æµ¿" score = "89"/>
Á¡¼ö¿¡ 2¸¦ ´õÇÏ´Â ¿¬»êÀ» ÇÏ´Â ÄÄÆ÷³ÍÆ®¿¡°Ô "89"¸¦ Àü´ÞÇÑ °ÍÀº ºÐ¸í ½Ç¼öÀÌ´Ù. ±×·¯³ª props·Î Àü´ÞµÇ´Â ¼Ó¼ºÀÌ ¹«½¼ ŸÀÔÀÎÁö Á¤ÀǵǾî ÀÖÁö ¾Ê¾Æ ÄÄÆÄÀÏ·¯´Â °³¹ßÀÚÀÇ Àǵµ¸¦ Á¤È®È÷ ¾Ë ¼ö ¾ø´Ù. ÀÌ·± ÇѰ踦 ±Øº¹Çϱâ À§ÇØ ÃÖ±Ù¿¡´Â ÀÚ¹Ù½ºÅ©¸³Æ®¿¡ ŸÀÔ Á¡°Ë ±â´ÉÀ» Ãß°¡ÇÑ Å¸ÀÔ½ºÅ©¸³Æ®¸¦ ¸¹ÀÌ »ç¿ëÇÑ´Ù.
vite·Î ¸¸µç study ÇÁ·ÎÁ§Æ®µµ
ŸÀÔ½ºÅ©¸³Æ®¸¦ ¾²°í ÀÖÀ¸¹Ç·Î ŸÀÔ Á¡°Ë ±â´ÉÀ» Àû±ØÀûÀ¸·Î »ç¿ëÇØ º¸ÀÚ. props ´ÙÀ½¿¡ ¸â¹öÀÇ Á¾·ù¿Í
ŸÀÔÀ» ºÐ¸íÈ÷ ÁöÁ¤ÇÏ¸é ¸ÂÁö ¾Ê´Â Àμö¿¡ ´ëÇØ °æ°í¸¦ Ç¥½ÃÇÑ´Ù.
function
ScoreBoard(props: {
name: string;
score: number;
}) {
return (
<>
<h2>¼ºÀûÇ¥</h2>
<p>{props.name}´ÔÀÇ Á¡¼ö´Â {props.score + 2}ÀÔ´Ï´Ù.</p>
</>
)
}
function
App() {
return (
<>
<ScoreBoard
name = "È«±æµ¿" score = "89"/>
</>
);
}
props ¼Ó¼º ´ÙÀ½¿¡ ¹®ÀÚ¿ÀÎ
name°ú ¼ýÀÚÀÎ score¸¦ ¸â¹ö·Î °¡Áö´Â °´Ã¼ÀÓÀ» ºÐ¸íÈ÷ ÁöÁ¤Çß´Ù. ÀÌ °´Ã¼ ŸÀÔÀ» ÀÌÈÄ¿¡µµ °è¼Ó »ç¿ëÇÑ´Ù¸é ¾Æ¿¹ interface·Î
ŸÀÔÀ» Á¤ÀÇÇÑ ÈÄ ÁöÁ¤ÇÏ´Â °ÍÀÌ ÁÁ´Ù.
interface ScoreBoardProps {
name:
string;
score: number;
}
function ScoreBoard(props: ScoreBoardProps) {
....
score¸¦ ¹®ÀÚ¿·Î Àü´ÞÇÏ¸é ¹ØÁÙÀÌ ±×¾îÁö°í Ä¿¼¸¦ °¡Á®°¡¸é °æ°í¸¦
º¸¿©ÁØ´Ù.

ÀÌ °æ°í¸¦ º¸°í °³¹ßÀÚ´Â ÀÚ½ÅÀÇ ½Ç¼ö¸¦ ¾Ë ¼ö ÀÖÀ¸¸ç ¹Ù·ÎÀâÀ» ¼ö ÀÖ´Ù. À̸§¿¡
¼ýÀÚ¸¦ Àü´ÞÇϰųª Çʼö Á¤º¸¸¦ Àü´ÞÇÏÁö ¾ÊÀ» ¶§µµ °æ°íÀÌ´Ù.
<ScoreBoard name = {1004} score = {89}/>
<ScoreBoard name = "È«±æµ¿"/>
<ScoreBoard score = {89}/>
À̸§°ú Á¡¼ö°¡ ´Ù ÇÊ¿äÇÏÁö¸¸ µÑ Áß Çϳª°¡ »ý·«µÇ¾úÀ¸´Ï ¼ºÀûÀ» Á¦´ë·Î Ãâ·ÂÇÒ ¼ö ¾ø´Ù. ±×·¯³ª °æ°íÀÏ »ÓÀÌ¾î¼ ÀÌ »óÅ·Π½ÇÇàÀº °¡´ÉÇÏ´Ù. ºñ·Ï À߸øµÈ
°á°úÀÌÁö¸¸ À¥Àº À¯¿¬Çؼ ¿¡·¯°¡ ÀÖ´õ¶óµµ À¢¸¸Çϸé ÀÏ´Ü º¸¿© ÁÖ·Á´Â °æÇâÀÌ ÀÖ´Ù.

ŸÀÔ½ºÅ©¸³Æ®°¡ µ¶¸³ÀûÀÎ ¾ð¾î°¡ ¾Æ´Ï´Ù º¸´Ï ÀÚ¹Ù½ºÅ©¸³Æ®ÀÇ ÇѰ踦 ¶Ù¾î ³Ñ±â ¾î·Æ´Ù´Â ¹®Á¦µµ ÀÖ´Ù. vite´Â ŸÀÔ½ºÅ©¸³Æ®¸¦ ¾²´õ¶óµµ °ú°Å¿¡ µÇ´ø ÄÚµå´Â ¿©ÀüÈ÷ À¯È¿ÇØ¾ß ÇϹǷΠ°æ°í¸¸ ÇÒ »Ó ½ÇÇàÀ» ¸·µµ·Ï ¼³Á¤ÇØ
³õÁö´Â ¾Ê´Â´Ù.
°Ô´Ù°¡ Áö±ÝÀº ÇÁ·Î´ö¼Ç ¸ðµå°¡ ¾Æ´Ñ °³¹ß ¸ðµåÀ̹ǷΠ»ç¼ÒÇÑ ½Ç¼ö±îÁö ÄÄÆÄÀÏÀ» ¹æÇØÇÒ ÇÊ¿ä´Â ¾ø´Ù. ÇÁ·ÎÁ§Æ®¸¦ Àá½Ã Áß´ÜÇÏ°í ºôµåÇØ º¸¸é °æ°í°¡ ¾Æ´Ñ ¿¡·¯¸¦ º¸¿© ÁÖ¸ç ÀÌ »óÅ·δ ¹èÆ÷ÇÏÁö ¸»¶ó´Â °ÍÀ» ºÐ¸íÈ÷
¾Ë·Á ÁØ´Ù.
error TS2322: Type 'string' is not assignable to
type 'number'.
<ScoreBoard name = "È«±æµ¿" score = "89"/>
ÀÌ »óÅ·δ ¹èÆ÷ÇÒ ¼ö ¾øÀ¸¹Ç·Î ¿¡·¯¸¦ ÇØ°áÇÑ ÈÄ ´Ù½Ã ºôµåÇØ¾ß ÇÑ´Ù. °³¹ßÁß¿¡
ŸÀÔ ºÒÀÏÄ¡ °æ°í´Â Ä¡¸íÀûÀÎ ¹ö±×ÀÇ ¿øÀÎÀÌ µÇ¹Ç·Î ¹«½ÃÇÏÁö ¸»°í Àß »ìÆì º¸ÀÚ.
ÄÄÆ÷³ÍÆ®´Â ¿©·¯ ¹ø »ç¿ëÇÒ ¼ö ÀÖ´Ù. HTML ¹®¼¾È¿¡ <a> ű׳ª <img> ű׸¦ ÇÊ¿äÇѸ¸Å ¾µ
¼ö ÀÖµíÀÌ <ScoreBoard> ÄÄÆ÷³ÍÆ®µµ ÇÊ¿äÇѸ¸Å ¾µ ¼ö ÀÖ´Ù. ºÎ¸ð ÄÄÆ÷³ÍÆ®¾È¿¡ ³ª¿ÇÏ¸é µÈ´Ù.
function
ScoreBoard(props) {
return (
<>
<h2>¼ºÀûÇ¥</h2>
<p>{props.name}´ÔÀÇ Á¡¼ö´Â {props.score}ÀÔ´Ï´Ù.</p>
</>
)
}
function
App() {
return (
<>
<ScoreBoard
name = "À̼ø½Å" score = "50"/>
<ScoreBoard
name = "À»Áö¹®´ö" score = "60"/>
<ScoreBoard
name = "°°¨Âù" score = "70"/>
</>
);
}
ScoreBoard ÄÄÆ÷³ÍÆ®¸¦ ¼¼ ¹ø ³ª¿ÇßÀ¸´Ï ¼¼ ¸í¿¡ ´ëÇÑ ¼ºÀûÇ¥°¡
Ãâ·ÂµÈ´Ù. ¶È°°Àº ÄÄÆ÷³ÍÆ®Áö¸¸ ¼Ó¼º¿¡ µû¶ó ½ÇÁ¦ ³»¿ëÀº ´Þ¶óÁø´Ù. ³Ê¹«
³Ê¹« »ó½ÄÀûÀÎ ¾ê±âÀÌ´Ù.

Çѹø Àß ¸¸µé¾î ³õÀ¸¸é ´Ù¸¥ ÇÁ·ÎÁ§Æ®¿¡ Àç»ç¿ëÇϱ⵵ ½±´Ù. ¾ÆÁ÷ ½ºÅ¸ÀÏÀ»
ÁÖÁö ¾Ê¾Æ ¹Ô¹ÔÇØ º¸ÀÌÁö¸¸ °¢ ¼ºÀûÇ¥¿¡ ¹Ú½º¸¦ µÎ¸£°í ¹è°æ»ö¸¸ ÀÔÇôµµ ±×·²µíÇØ º¸ÀδÙ. ÀÌ·± ¹Ú½º¸¦
Æ÷°³°í °ãÃÄ ¸ÚÁø À¥ ÆäÀÌÁö¸¦ ¸¸µç´Ù. ÀÌ·¡¼ ÄÄÆ÷³ÍÆ®¸¦ ºÎǰÀ̶ó°í ÇÏ¸ç ¸®¾×Æ®¸¦ ÄÄÆ÷³ÍÆ® ±â¹ÝÀ̶ó°í
ÇÏ´Â °ÍÀÌ´Ù.
Àß ¸¸µé¾î ³õÀº ÄÄÆ÷³ÍÆ®¸¦ ´Ù¸¥ ÇÁ·ÎÁ§Æ®¿¡ º¹»çÇϱ⸸ ÇÏ¸é ¹Ù·Î Àç»ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç À¥¿¡ Àü¹®°¡µéÀÌ ¸¸µç ÄÄÆ÷³ÍÆ®°¡
³Î·Á ÀÖ´Ù. ScoreBoard ÇÔ¼ö¸¦ º¹»çÇØ ºÙ¿© ³ÖÀ¸¸é µÈ´Ù. ´Ü, ÄÄÆ÷³ÍÆ®´Â ½Ç¿ëÀûÀÎ ¼Ó¼ºÀ» ¸¹ÀÌ Á¦°øÇØ¾ß ÇÏ¸ç »ç¿ëÇÏ´Â ÂÊ¿¡¼´Â ¿ä±¸ÇÏ´Â ¼Ó¼ºÀ» Á¤È®È÷ Àü´ÞÇØ¾ß ÇÑ´Ù.
Ä¿´Ù¶õ ÄÄÆ÷³ÍÆ® Çϳªº¸´Ù´Â ÀÚÀßÇÑ ÄÄÆ÷³ÍÆ® ¿©·¯ °³·Î ³ª´©¾î ³õÀ¸¸é ´Ù¾çÇÑ ¹æ½ÄÀ¸·Î Á¶ÇÕÇØ¼ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¸¶Ä¡ ÇÔ¼ö¸¦ Àß°Ô ³ª´©¸é ÆíÀǼºÀÌ Áõ°¡ÇÏ´Â °Í°ú °°´Ù. ¼ºÀûÇ¥´Â
¿ö³« À۾Ƽ ´õ ³ª´ °Íµµ ¾øÁö¸¸ Á» ¾ïÁö½º·´´õ¶óµµ ½ÃÇèÀ̸§°ú ¼ºÀûÇ׸ñÀ¸·Î ºÐ¸®ÇØ º¸ÀÚ.
¿¹Á¦ : twocompo
function
ScoreBoard(props) {
return (
<>
<h2>{props.exam} ¼ºÀûÇ¥</h2>
{<ScoreItem
name = {props.name} score = {props.score}/>}
</>
)
}
function
ScoreItem(props) {
return (
<p>{props.name}´ÔÀÇ
Á¡¼ö´Â {props.score}ÀÔ´Ï´Ù.</p>
)
}
function
App() {
return (
<>
<ScoreBoard
exam = "Áß°£°í»ç" name = "È«±æµ¿" score = "89"/>
</>
);
}
Àüü ¼ºÀûÇ¥¿¡¼ ÇÑ »ç¶÷ÀÇ ¼ºÀûÀ» Ç¥½ÃÇÏ´Â ¹®´ÜÀ» ScoreItemÄÄÆ÷³ÍÆ®·Î
ºÐ¸®Çß´Ù. <p> ÅÂ±× Çϳª¸¦ ¸®ÅÏÇÏ´Â ÄÄÆ÷³ÍÆ®¿©¼ ±»ÀÌ
<div>³ª <>·Î °¨½ÎÁö ¾Ê¾Æµµ µÈ´Ù. ÇÑÁÙ·Î ¾µ ¼öµµ ÀÖÁö¸¸ È®À强À» °í·ÁÇÏ¿© ( ) °ýÈ£´Â ºÙ¿© µÎ¾ú´Ù.

¼ºÀûÀº ScoreItem ÇÏÀ§ ÄÄÆ÷³ÍÆ®·Î ºÐ¸®Çϰí ScoreBoard´Â ½ÃÇè À̸§¸¸ Ç¥½ÃÇÑ´Ù. ½ÃÇèµµ ¿©·¯ Á¾·ù°¡ ÀÖÀ¸¹Ç·Î
À̸§À» exam ¼Ó¼ºÀ¸·Î Àü´Þ¹Þ¾Æ Ç¥½ÃÇÑ´Ù. ¼Ó¼ºÀÌ Çϳª
´õ ´Ã¾úÀ¸¹Ç·Î È£ÃâÇÒ ¶§´Â exam ¼Ó¼ºµµ ÁöÁ¤ÇØ¾ß ÇÑ´Ù.
ScoreBoard´Â ¼¼ °³ÀÇ ¼Ó¼ºÀ» ¹Þ¾Æ examÀº ÀÚ½ÅÀÌ Ãâ·ÂÇϰí name, score´Â ÀÚ½Ä ÄÄÆ÷³ÍÆ®ÀÎ
ScoreItemÀ¸·Î Àü´ÞÇÑ´Ù. µÎ °³ÀÇ ÄÄÆ÷³ÍÆ®°¡ ÁßøµÇ¾î
ÀÖÀ¸¸ç ScoreBoard ÄÄÆ÷³ÍÆ®°¡ ScoreItemÀ»
Æ÷ÇÔÇÏ¿© ¸®ÅÏÇÑ´Ù.

°ãÄ¡´Ï±î º¹ÀâÇØ º¸ÀÌÁö¸¸ »ç½ÇÀº ±²ÀåÈ÷ »ó½ÄÀûÀÎ ±¸Á¶ÀÌ´Ù. HTML ¹®¼¿¡¼ <p>ÅÂ±× ¾È¿¡ <b>, <a> űװ¡
Æ÷ÇԵǾî ÀÖ´Â °Í°ú °³³äÀûÀ¸·Î ¶È°°Àº ±¸Á¶ÀÌ´Ù. <p>, <a> ó·³ ¼Ò¹®ÀÚ·Î
½ÃÀÛÇÏ´Â °Ç HTML ű×À̰í <ScoreBoard>, <ScoreItem>
ó·³ ´ë¹®ÀÚ·Î ½ÃÀÛÇÏ´Â °Ç ¸®¾×Æ® ÄÄÆ÷³ÍÆ®ÀÏ »ÓÀÌ´Ù.
<p>°³¹ßÀÚÀÇ <b>õ±¹</b> :
<a
href="http://www.soen.kr">Soen</a>
</p>
ÄÄÆ÷³ÍÆ®¸¦ Àß°Ô ³ª´©¾î ³õÀ¸¸é ÀÚ±âµé³¢¸® ÁßøÇÒ ¼ö ÀÖ°í °°Àº ÄÄÆ÷³ÍÆ®¸¦ ³ª¿ÇÒ ¼öµµ ÀÖ´Ù. °ú¿¬ ±×·±Áö App¿¡¼ ÄÄÆ÷³ÍÆ®¸¦ ³ª¿ÇÏ¿© ¼ºÀûÇ¥¿Í ¼ºÀû Ç׸ñÀ»
¿©·¯ °³ ¸¸µé¾î º¸ÀÚ. ¿©·¯ °³ÀÇ ÄÄÆ÷³ÍÆ®¸¦ ³ª¿ÇÒ ¶§´Â ´ÜÀÏ ·çÆ® ¿øÄ¢¿¡ µû¶ó <> </>·Î °¨½Î¾ß ÇÑ´Ù.
function
ScoreBoard(props) {
return (
<>
<h2>{props.exam} ¼ºÀûÇ¥</h2>
{<ScoreItem
name = {props.name} score = {props.score}/>}
</>
)
}
function
ScoreItem(props) {
return (
<p>{props.name}´ÔÀÇ
Á¡¼ö´Â {props.score}ÀÔ´Ï´Ù.</p>
)
}
function
App() {
return (
<>
<ScoreBoard
test = "Áß°£°í»ç" name = "È«±æµ¿" score = "89"/>
<ScoreBoard
test = "±â¸»°í»ç" name = "±èÇö¼ö" score = "76"/>
<ScoreItem
name = "±èÇѽ½" score = "92"/>
</>
);
}
¶È°°Àº ÄÄÆ÷³ÍÆ®¶óµµ ¼Ó¼ºÀ» ¹Þ¾Æ µéÀ̹ǷΠ°¢°¢ ½ÃÇè°ú À̸§, Á¡¼ö¸¦
´Ù¸£°Ô Ç¥ÇöÇÒ ¼ö ÀÖ´Ù. ¶Ç ScoreItemÀº ScoreBoard¿¡ Æ÷ÇԵǾî ÀÖÁö¸¸ ±× ÀÚüµµ µ¶¸³ÀûÀÎ ÄÄÆ÷³ÍÆ®À̹ǷΠ´Üµ¶À¸·Î »ç¿ëÇÒ ¼öµµ ÀÖ´Ù.

Áö±ÝÀº ´Ü¼øÇÑ ¹æ¹ýÀ¸·Î ÄÄÆ÷³ÍÆ®¸¦ ¹Ýº¹ÇßÁö¸¸ ¹è¿, ·çÇÁ¿Í °áÇÕÇÏ¿©
ÄÄÆ÷³ÍÆ®¸¦ µ¿ÀûÀ¸·Î »ý¼ºÇÏ¸é ´ë·®ÀÇ ÀڷḦ Ãâ·ÂÇϰí ÇÊÅ͸µ, Á¤·Ä µîÀÇ ±â¹ýÀ» ´Ù Ȱ¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌ ½Ç½ÀÀº Àá½Ã ÈÄ ÇØ º¼ °ÍÀÌ´Ù.
ScoreItem°ú ScoreBoard´Â
±ä¹ÐÈ÷ ¿¬°üµÇ¾î ÀÖ´Ù. Á¡¼ö´Â ¼ºÀûÇ¥ ¾È¿¡ ÀÖ¾î¾ß Àǹ̰¡ ÀÖÀ¸´Ï ÁßÃ¸ÇØ¼ ¾²´Â°Ô ´ç¿¬ÇÏ´Ù. ±×·¯³ª ÄÄÆ÷³ÍÆ®³¢¸® Áßø°ü°è¶ó°í ÇØ¼ ÇÔ¼ö¸¦ ÁßøÇÏ´Â °ÍÀº ¹Ù¶÷Á÷ÇÏÁö ¾Ê´Ù.
function
ScoreBoard(props) {
function ScoreItem(props) {
return (
<p>{props.name}´ÔÀÇ Á¡¼ö´Â {props.score}ÀÔ´Ï´Ù.</p>
)
}
return (
<>
<h2>{props.exam} ¼ºÀûÇ¥</h2>
{<ScoreItem
name = {props.name} score = {props.score}/>}
</>
)
}
function
App() {
return (
<>
<ScoreBoard
exam = "Áß°£°í»ç" name = "È«±æµ¿" score = "89"/>
</>
);
}
ScoreBoard ÇÔ¼ö¾È¿¡ ScoreItem
Áö¿ª ÇÔ¼ö¸¦ ¼±¾ðÇß´Ù. ¾îÂ÷ÇÇ ¼ºÀûÇ¥ ¾È¿¡ ¼ºÀûÀÌ µé¾î°¡¾ß Çϰí ÀÚ¹Ù½ºÅ©¸³Æ®°¡ Áö¿ª ÇÔ¼ö¸¦
Áö¿øÇÏ´Ï ¹®¹ýÀûÀ¸·Î´Â ¾Æ¹« ¹®Á¦°¡ ¾øÀ¸¸ç ½ÇÇ൵ Àß µÈ´Ù. ±×·¯³ª ¿©·¯ °¡Áö ÀÌÀ¯·Î ÀÌ·± ÇüÅ´ ±ÇÀåÇÏÁö
¾Ê´Â´Ù.
¢º ´Ù¸¥ °÷¿¡¼ ScoreItem ¸¸
ÀçȰ¿ëÇÏ°í ½ÍÀ» ¶§ ºÎ¸ð¿Í ¿«ÀÎ Äڵ带 ºÐ¸®ÇÑ ÈÄ °¡Á® °¡¾ß ÇϹǷΠ¹ø°Å·Î¿öÁø´Ù.
¢º ºÎ¸ð¸¦ ·£´õ¸µÇÒ ¶§¸¶´Ù ÀÚ½Ä ÄÄÆ÷³ÍÆ®¸¦ °Á¦·Î »õ·Î »ý¼ºÇϹǷΠ¸Þ¸ð¸®µµ
¸¹ÀÌ ¾²°í ´À·ÁÁø´Ù.
¢º ÇÑÂÊ¿¡ ¹ö±×°¡ »ý±æ ¶§ Å×½ºÆ®ÇÏ±â ¾î·Æ´Ù.
ÄÄÆ÷³ÍÆ®³¢¸® ±â´ÉÀûÀ¸·Î´Â Áßø °ü°èÀÌ´õ¶óµµ ÇÔ¼ö´Â ¹Ýµå½Ã ÃÖ»óÀ§ ·¹º§¿¡ µ¶¸³ÀûÀ¸·Î ÀÛ¼ºÇÒ °ÍÀ» ±ÇÇÑ´Ù. ScoreBoard¿Í ScoreItemÀº °°Àº ·¹º§ÀÇ ÆòµîÇÑ ÇÔ¼ö·Î
Á¤ÀÇÇϰí Á¶ÇÕÇÒ ¶§¸¸ ÁßÃ¸ÇØ¼ ½á¾ß ÇÑ´Ù. ´õ ÀÌ»óÀûÀ¸·Î´Â ¾Æ¿¹ ¸ðµâÀ» ºÐ¸®ÇÏ´Â °ÍÀÌ ÁÁ´Ù.
Á¤¸» ±Ø´ÜÀûÀ¸·Î °£´ÜÇÑ ÄÄÆ÷³ÍÆ®´Â ±âµ¿¼ºÀ» À§ÇØ ÇÔ¼ö¸¦ ÁßøÇÏ´Â °æ¿ìµµ ÀÖ´Ù.
±×·¯³ª ¹®¹ýÀûÀ¸·Î °¡´ÉÇÏ´õ¶óµµ ±ÇÀåÇÏÁö ¾Ê´Â´Ù. ´Ù ÀÌÀ¯°¡ ÀÖ¾î¼ ¸¸µé¾îÁø °üÇàÀ̹ǷΠ°¡±ÞÀû
ÁöŰ´Â °ÍÀÌ ÁÁ´Ù. ¸®¾×Æ®¸¦ Àß È°¿ëÇÏ·Á¸é ÀÌ·± °üÇàÀ» Á¦´ë·Î ÀÍÈ÷´Â °Íµµ Áß¿äÇÏ´Ù.
ÄÄÆ÷³ÍÆ®µµ ÀÏÁ¾ÀÇ Å±×ÀÌ´Ù. ÄÄÆ÷³ÍÆ®¸¸ »ðÀÔÇÒ ¶§´Â <ScoreBoard /> ½ÄÀ¸·Î ¾²Áö¸¸
<p></p>³ª <div></div>ó·³ ¿©´Â
ÅÂ±×¿Í ´Ý´Â ű׸¦ °¢°¢ ¾µ ¼öµµ ÀÖ´Ù. ÀÌ·¯¸é ÅÂ±× »çÀÌ¿¡ ¹º°¡¸¦ ´õ ³ÖÀ» ¼ö ÀÖ´Ù. ¿ä·¸°Ô Àü´ÞµÈ ű״ PropsÀÇ ¼û°ÜÁø Àμö childrenÀ¸·Î ÂüÁ¶ÇÑ´Ù.
function
ScoreBoard(props) {
return (
<>
<h2>¼ºÀûÇ¥</h2>
<p>{props.name}´ÔÀÇ Á¡¼ö´Â {props.score}ÀÔ´Ï´Ù.</p>
<hr />
<p>°øÁö
»çÇ× : {props.children}</p>
</>
)
}
function
App() {
return (
<>
<ScoreBoard
name = "È«±æµ¿" score = "89">
±â¸»°í»çµµ Àß ÁغñÇØ ÁÖ¼¼¿ä.
</ScoreBoard>
</>
);
}
<ScoreBoard> ű×ÀÇ ³»¿ëÀ¸·Î Àü´Þ »çÇ×À» ¸í½ÃÇϸé
ÄÄÆ÷³ÍÆ®´Â ÀÌ ³»¿ëÀ» {props.children}À¸·Î Àоî Ãâ·ÂÇÑ´Ù.
°øÁö »çÇ×À» ¼ºÀûÇ¥¿Í ±¸ºÐÇϱâ À§ÇØ ¼öÆò¼±À» ±ß°í ¾Æ·¡ÂÊ¿¡ ¹®´ÜÀ¸·Î Ãâ·ÂÇß´Ù.

<p> ÅÂ±× ¾ÈÂÊ¿¡ ¹®´ÜÀÇ ³»¿ëÀÌ µé¾î°¡´Â °Í°ú °³³äÀûÀ¸·Î
°°´Ù. ÅÂ±× ¾È¿¡ ¹®ÀÚ¿ »Ó¸¸ ¾Æ´Ï¶ó ÀÚ½Ä Å±װ¡ µé¾î°¥ ¼ö ÀÖµíÀÌ ÄÄÆ÷³ÍÆ®µµ ¸¶Âù°¡ÁöÀÌ´Ù. ÄÄÆ÷³ÍÆ® ³»ºÎÀÇ ¼öÆò¼±°ú °øÁö»çÇ× ¹®´ÜÀ» È£ÃâÃø¿¡ ³Ö°í ÄÄÆ÷³ÍÆ®´Â ÀÌ°É ±×´ë·Î Ãâ·ÂÇØµµ µÈ´Ù.
function
ScoreBoard(props) {
return (
<>
<h2>¼ºÀûÇ¥</h2>
<p>{props.name}´ÔÀÇ Á¡¼ö´Â {props.score}ÀÔ´Ï´Ù.</p>
{props.children}
</>
)
}
function
App() {
return (
<>
<ScoreBoard name = "È«±æµ¿" score = "89">
<hr />
<p>±â¸»°í»çµµ
Àß ÁغñÇØ ÁÖ¼¼¿ä.</p>
</ScoreBoard>
<ScoreBoard name = "À̽¿ì" score = "52">
<p><b>ÇÐ»ç °æ°í</b></p>
</ScoreBoard>
</>
);
}
childrenÀº ¸®¾×Æ® ÄÄÆ÷³ÍÆ®ÀÇ ¹è¿Àε¥ {props.children}¸¸ ¾²¸é ¹è¿ÀÌ ±×´ë·Î Ãâ·ÂµÈ´Ù. ÀÌ·¸°Ô
µÇ¸é È£ÃâÃø¿¡¼ Àü´Þ»çÇ×À» ÄÄÆ÷³ÍÆ®¸¶´Ù ´Ù¸£°Ô Àü´ÞÇÒ ¼ö ÀÖ¾î Ȱ¿ë¼ºÀÌ Áõ°¡ÇÑ´Ù. ¼ºÀû¿¡ µû¶ó ´Ù¸¥
Àü´Þ »çÇ×À» ³Ñ±æ ¼öµµ ÀÖ°í ´Ù¸¥ ½ºÅ¸ÀÏÀ» Àû¿ëÇÒ ¼öµµ ÀÖ¾î È£ÃâÃø¿¡ ·£´õ¸µ ¹æ½Ä±îÁö Áö½ÃÇÒ ¼ö ÀÖ´Ù.

props·Î´Â ÄÄÆ÷³ÍÆ®ÀÇ ¼Ó¼º »Ó¸¸ ¾Æ´Ï¶ó ÀÚ½Ä ÄÄÆ÷³ÍÆ®±îÁöµµ ´Ù
Àü´ÞµÈ´Ù. È£ÃâÃøÀÇ ¸ðµç Á¤º¸°¡ ÀÌ ¾È¿¡ ´Ù µé¾î°¡´Â ¼ÀÀÌ´Ù.
childrenÀº Â÷Àϵå Àüü¸¦ °¡Áö´Â ¹è¿À̸ç ÀϺθ¸ Àд ¹®¹ýÀº µû·Î Á¦°øÇÏÁö ¾Ê´Â´Ù. ÀϺθ¸
»ç¿ëÇÏ·Á¸é ¹è¿À» °Ë»öÇØ¼ ÇÊÅ͸µÇÑ ÈÄ »ç¿ëÇÏ¸é µÈ´Ù.
Áö±Ý±îÁöÀÇ ¿¹Á¦¿¡¼´Â ÄÄÆ÷³ÍÆ®°¡ ¿©·¯ °³ÀÌ´õ¶óµµ º¸±â ½±µµ·Ï °¡±ÞÀû ÇÑ ÆÄÀÏ¿¡ ÀÛ¼ºÇß´Ù. ±×·¯³ª ½Ç¹«¿¡¼´Â ÄÄÆ÷³ÍÆ®º°·Î °¢°¢ÀÇ ¼Ò½º ÆÄÀÏ¿¡ ÀÛ¼ºÇÏ´Â°Ô ¿øÄ¢ÀÌ´Ù. ÀÌ
¿øÄ¢´ë·Î App, ScoreBoard, ScoreItem 3°³ÀÇ ÄÄÆ÷³ÍÆ®¸¦ µû·Î ¸¸µé¾î º¸ÀÚ. ÅëÇÕ ¹èÆ÷ ¿¹Á¦¿¡µµ ÀÛ¼ºµÇ¾î ÀÖÁö¸¸ ÀÌ·± ½Ç½ÀÀº º°µµÀÇ ÇÁ·ÎÁ§Æ®¸¦ µû·Î ¸¸µé¾î ½Ç½ÀÇÏ´Â°Ô ÁÁ´Ù.
App.tsx´Â ÀÌ¹Ì ÀÖÀ¸´Ï ³ª¸ÓÁö µÎ °³ÀÇ ÆÄÀϸ¸ ¸¸µé¸é µÈ´Ù. º°µµÀÇ ÇÏÀ§ Æú´õ¸¦ ¸¸µé¾îµµ µÇÁö¸¸ ±ÍÂúÀ¸´Ï src Æú´õ¿¡ ¸¸µéÀÚ. Ž»ö±â¿¡¼ src Æú´õ¸¦ ¼±ÅÃÇØ ³õÀº »óÅ¿¡¼ ¿À¸¥ÂÊ Åø¹ÙÀÇ µÎ
¹øÂ° »õ ÆÄÀÏÀ» ¹öưÀ» Ŭ¸¯Çϸé src ¾Æ·¡ »õ ÆÄÀÏ À̸§À» ÀÔ·ÂÇÏ´Â ¿¡µðÆ®°¡ ¿¸°´Ù.

°¡Àå ÇÏÀ§ÀÇ ÄÄÆ÷³ÍÆ®ÀÎ ScoreItemºÎÅÍ ¸¸µé¾î º¸ÀÚ. src¿¡ ScoreItem.tsx ÆÄÀÏÀ» Ãß°¡ÇÏ¸é ºó ÆíÁý±â°¡ ¿¸®´Âµ¥
´ÙÀ½ ¼Ò½º¸¦ ÀÛ¼ºÇÑ´Ù.
function
ScoreItem(props) {
return (
<p>{props.name}´ÔÀÇ
Á¡¼ö´Â {props.score}ÀÔ´Ï´Ù.</p>
)
}
export
default ScoreItem
ÄÄÆ÷³ÍÆ®ÀÇ ÄÚµå´Â ÀÌ¹Ì º» °ÍÀÌ°í ¼Ò½º Á¦ÀÏ ¾Æ·¡ÂÊ¿¡ ÄÄÆ÷³ÍÆ®¸¦ ¿ÜºÎ·Î °ø°³ÇÏ´Â export¹®ÀÌ ÀÛ¼ºµÇ¾î ÀÖ´Ù. ÀÚ½ÅÀ» ¹ÛÀ¸·Î °ø°³ÇØ¾ß »ç¿ëÇÏ´ÂÂÊ¿¡¼
ÀÌ ÄÄÆ÷³ÍÆ®¸¦ ºÒ·¯´Ù ¾µ ¼ö ÀÖ´Ù. °°Àº ÀýÂ÷´ë·Î À̹ø¿¡´Â
ScoreBoard.tsx¸¦ Ãß°¡ÇÑ´Ù.
import
ScoreItem from './ScoreItem';
function
ScoreBoard(props) {
return (
<>
<h2>{props.exam} ¼ºÀûÇ¥</h2>
{<ScoreItem
name = {props.name} score = {props.score}/>}
</>
)
}
export
default ScoreBoard;
¼Ò½º ¼±µÎ¿¡¼ import¹®À¸·Î ScoreItem.tsxÀÇ
ScoreItem ÄÄÆ÷³ÍÆ®¸¦ Àоî¿Â´Ù. ÀÌ ¹®ÀåÀÌ ÀÖ¾î¾ß
<ScoreItem> ÄÄÆ÷³ÍÆ®¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ScoreBoard
Àڽŵµ ¿ÜºÎ·Î °ø°³ÇØ¾ß ÇϹǷΠ¼Ò½º ¸»¹Ì¿¡ export ¼±¾ðÀ» ÇØ¾ß ÇÑ´Ù. ÄÄÆ÷³ÍÆ®°¡ ÁغñµÇ¾úÀ¸´Ï App.tsx¿¡¼ ÄÄÆ÷³ÍÆ®¸¦ ¹èÄ¡ÇÑ´Ù.
import
ScoreBoard from './ScoreBoard';
import
'./App.css'
function
App() {
return (
<>
<ScoreBoard
exam = "Áß°£°í»ç" name = "È«±æµ¿" score = "89"/>
</>
);
}
export
default App
¼ºÀûÇ¥¸¦ Ãâ·ÂÇϱâ À§ÇØ ScoreBoard¸¦ ÀÓÆ÷Æ®Çϰí <ScoreBoard>¸¦ ¹èÄ¡ÇÑ´Ù. ¼ºÀûÇ¥ ¾ÈÀÇ ScoreItemÀº Á÷Á¢ »ç¿ëÇÏÁö ¾ÊÀ¸´Ï ±»ÀÌ ±»ÀÌ ÀÓÆ÷Æ®ÇÏÁö ¾Ê¾Æµµ µÈ´Ù. App
ÄÄÆ÷³ÍÆ® Àڽŵµ main.tsx¿¡¼ »ç¿ëÇϹǷÎ
export Çϴµ¥ ¹èÆ÷ ¿¹Á¦¿¡´Â ÀÌ¹Ì ÀÛ¼ºµÇ¾î ÀÖ´Ù.

ÄÄÆ÷³ÍÆ®°£ÀÇ Æ÷ÇÔ °ü°è°¡ ¿©·¯ ´Ü°èÀÌ´Ù. »ç½Ç mainµµ ¿ìµÎ¸Ó¸®´Â ¾Æ´Ï¸ç index.htmlÀÇ root ¾Æ·¡·Î µé¾î°£´Ù. ½ÇÇàÇØ º¸¸é ¼ºÀûÇ¥°¡ ȸé Áß¾Ó¿¡ ³ªÅ¸³ª
ÇÑ ¼Ò½º ÆÄÀÏ¿¡ ¸ðµÎ ÀÛ¼ºÇÑ °Í°ú °á°ú´Â °°´Ù.
Çö´ëÀûÀÎ ÇÁ·Î±×·¡¹ÖÀº °¡±ÞÀû Àß°Ô ºÐÇÒ °³¹ßÇÏ´Â ¸ðµâȰ¡ ¿øÄ¢ÀÌ´Ù. ÇÑ
ÆÄÀÏÀº µü ÇϳªÀÇ ÀÓ¹«¸¸ ¶ç°í ±×°Í¸¸ Àß ÇÏ¸é µÈ´Ù. ÀÌ ¿øÄ¢À» µû¸£¸é ¿©·¯ °¡Áö ÀåÁ¡ÀÌ »ý±ä´Ù.
¢º ºÐÇÒ ÀÛ¾÷ÀÌ ¿ëÀÌÇØ °¢ÀÚ ¸ÃÀº ¼Ò½º¸¸ ÀÛ¼ºÇÏ¸é µÈ´Ù. ¼·Î °£¼·ÇÒ ÀÏÀÌ ¾ø°í git¿¡¼ÀÇ Ãæµ¹µµ ÃÖ¼ÒÈÇÒ ¼ö ÀÖ´Ù.
¢º ÄÄÆ÷³ÍÆ®°¡ ¼Ò½º°¡ 1:1 ´ëÀÀµÇ¹Ç·Î
Àç»ç¿ëÇϱ⠽±´Ù. ¼Ò½º ÆÄÀϸ¸ º¹»çÇØ ºÙ¿© ³ÖÀ¸¸é ´Ù¸¥ ÇÁ·ÎÁ§Æ®¿¡¼µµ ¶È°°ÀÌ µ¿ÀÛÇÑ´Ù.
¢º ¹Ù²ï ºÎºÐ¸¸ ´Ù½Ã ÄÄÆÄÀÏÇÏ¸é µÇ¹Ç·Î °³¹ß ¼Óµµ°¡ »¡¶óÁö°í ¹èÆ÷ÇÒ ¶§µµ
¾÷µ¥ÀÌÆ®ÇÑ ºÎºÐ¸¸ ´Ù½Ã ·ÎµåÇÏ¸é µÇ´Ï ºü¸£´Ù.
½Ç¹« ÇÁ·ÎÁ§Æ®¿¡¼´Â ÀåÁ¡ÀÌ ¸¹¾Æ Àû±ØÀûÀ¸·Î ºÐÇÒÇØ¾ß ÇÑ´Ù. ±×·¯³ª
½Ç½ÀÇÒ ¶§´Â Äڵ带 ÀÛ¼ºÇÏ´Â °Íº¸´Ù ÆÄÀÏÀ» ¸¸µé°í import, export Çϴµ¥ ¼ÕÀÌ ´õ ¸¹ÀÌ °¡
¹ø°Å·Ó´Ù. °íÀÛ ´Ù¼¸ÁÙ¹Û¿¡ ¾ÈµÇ´Â Äڵ带 À§ÇØ º°µµÀÇ ÆÄÀÏÀ» ¸¸µå´Â °ÍÀº ³¶ºñÀÌ´Ù.
¶Ç ÇнÀÇÏ´Â »ç¶÷ÀÌ ¼Ò½º¸¦ ÀÐÀ» ¶§µµ ¿©·¯ ÆÄÀÏ¿¡ Èð¾îÁø Äڵ带 µû·Î ºÁ¾ß ÇÏ´Ï °¡µ¶¼ºµµ ½ÉÇÏ°Ô ¶³¾îÁø´Ù. ÀÌ·± ÀÌÀ¯·Î ÀÌ °Á´ ÇÑ ÁÖÁ¦¿¡ ´ëÇØ¼´Â °¡±ÞÀû ÇÑ ¼Ò½º ÆÄÀÏ¿¡ ÀÛ¼ºÇÏ¿´´Ù.
¾Æ·¡ À§·Î °ü·Ã ÄÄÆ÷³ÍÆ®°¡ ÀÎÁ¢ÇØ ÀÖÀ¸¸é ±¸Á¶ ÆÄ¾ÇÀÌ ¿ëÀÌÇÏ´Ù.
À¥ ÆäÀÌÁö´Â ºñ½ÁÇÑ Á¤º¸°¡ °è¼Ó ¹Ýº¹µÇ´Â ÇüŰ¡ ¸¹´Ù. ¼îÇθôÀº »óǰÀÇ
³ª¿ÀÌ°í °Ô½ÃÆÇÀº ±ÛÀÇ ³ª¿ÀÌ´Ù.

ÀÌ·± ³ª¿µÇ´Â ºÎºÐÀ» ÄÄÆ÷³ÍÆ®·Î Á¤ÀÇÇÏ¿© ¹Ýº¹ÇÏ¸é µÈ´Ù. ¾Õ¿¡¼ ScoreItemÀ» µÎ ¹ø ³ª¿ÇØ ºÃ´Âµ¥ ´ë¿ë·®Àº ÀÌ·± ±â°èÀûÀÎ ¹æ¹ýÀ¸·Î´Â ¸¸µé ¼ö ¾ø´Ù. ¹«½ÄÇÏ°Ô ¸¸µç ÄÚµå´Â °ü¸®µµ ¾ÈµÈ´Ù.
°¡º¯ °³¼öÀÇ ÄÄÆ÷³ÍÆ®¸¦ ´Ù·ê¶§´Â ¹è¿°ú ·çÇÁ¸¦ »ç¿ëÇÑ´Ù. JSX ÀÚü´Â
ÀÌ·± ±â´ÉÀ» Á¦°øÇÏÁö ¾ÊÀ¸¸ç ÀÚ¹Ù½ºÅ©¸³Æ®ÀÇ ¹®¹ýÀ» Ȱ¿ëÇÑ´Ù. ÀÚ¹Ù½ºÅ©¸³Æ®¸¸ ¾Ë¸é ±²ÀåÈ÷ ½¬¿î ³»¿ëÀÌ´Ù. ´ÙÀ½ ¿¹Á¦´Â ¿ì¸®³ª¶ó µµ½Ã¿¡ ´ëÇÑ °£´ÜÇÑ µ¥ÀÌÅͺ£À̽º¸¦ À¥ ÆäÀÌÁö¿¡ Ãâ·ÂÇÑ´Ù.
¿¹Á¦ : compmap
const
cities = [
{ name: '¼¿ï',
area: 605, popu: 974, metro: true, region: '°æ±â' },
{ name: '¿©ÁÖ',
area: 608, popu: 11, metro: false, region: '°æ±â' },
{ name: 'ºÎ»ê',
area: 765, popu: 342, metro: true, region: '°æ»ó' },
{ name: 'ûÁÖ',
area: 940, popu: 83, metro: false, region: 'ÃæÃ»' },
{ name: 'ÀüÁÖ',
area: 205, popu: 65, metro: false, region: 'Àü¶ó' },
{ name: 'ȫõ',
area: 1819, popu: 7, metro: false, region: '°¿ø' },
]
function
CityList() {
return (
<>
<h2>¿ì¸®³ª¶ó
µµ½Ã</h2>
<ul>
{cities.map(city =>
<li>
{city.name} : {city.region}µµ {city.area}Km2,
{city.popu}¸¸¸í
</li>
)}
</ul>
</>
)
}
function
App() {
return (
<>
<CityList
/>
</>
);
}
ÀÌ ¿¹Á¦ÀÇ cities ¹è¿Àº µµ½Ã Á¤º¸¸¦ °¡Áø´Ù. µµ½Ã Á¤º¸ Çϳª°¡ °´Ã¼ÀÌ¸ç ±×·± °´Ã¼ ¿©·¯ °³°¡ ¸ð¿© ¹è¿À» ÀÌ·é´Ù. ½Ç¹«
ȯ°æ¿¡¼ ÀÌ·± Á¤º¸´Â ´ç¿¬È÷ µ¥ÀÌÅͺ£À̽º¿¡¼ ÀÐ¾î ¿À°ÚÁö¸¸ Áö±ÝÀº ±×·±°Ô ¾øÀ¸´Ï °´Ã¼ ¹è¿·Î »ùÇÃÀ» °£´ÜÈ÷ ¸¸µé¾ú´Ù.
CityList ÄÄÆ÷³ÍÆ®´Â µµ½Ã Á¤º¸¸¦ ArrayÀÇ map ¸Þ¼µå·Î ¹Ýº¹Çϸç HTML ű׷ΠÀüȯÇÑ´Ù. Á¦¸ñÀº
<h2>·Î ºÙÀÌ°í µµ½Ã³¢¸® ¼ø¼°¡ ÀÖ´Â °ÍÀº ¾Æ´Ï¹Ç·Î <ul> ¸ñ·ÏÀ¸·Î
³ª¿ÇÑ´Ù. °¢ µµ½Ã´Â <li> ű׷Πǥ½ÃÇÑ´Ù. ½ÇÇà °á°úºÎÅÍ º¸ÀÚ.

<h2>¿Í
<ul>Àº ¹Ýº¹ ´ë»óÀÌ ¾Æ´Ï¹Ç·Î JSX ¾È¿¡ ±×³É Àû´Â´Ù. °¢ µµ½ÃÀÇ Ç׸ñÀÎ <li>´Â µµ½Ã¼ö¸¸Å ¹Ýº¹Çϴµ¥ ÀÌ
¹Ýº¹À» map ¸Þ¼µå·Î ó¸®Çß´Ù. ÀÌ Äڵ尡 ±²ÀåÈ÷ ¿ä»óÇØ
º¸À̰í óÀ½ º¸´Â »ç¶÷¿¡°Ô´Â ¾î·Á¿îµ¥ ½Ã°£ÀÌ Á» °É¸®´õ¶óµµ »ó¼¼È÷ ºÐÇØÇØ º¸ÀÚ.
mapÀº ¹è¿ÀÇ °¢ ¿ä¼Ò¸¦ ¼øÈ¸ÇÏ¸ç ¿ä¼Ò°ªÀ» º¯ÇüÇÑ °á°ú·Î ±¸¼ºµÈ
»õ·Î¿î ¹è¿À» ¸¸µé¾î ³½´Ù. ¼¿ï, ºÎ»ê, ûÁÖ °°Àº µµ½Ã °´Ã¼¸¦ city¶ó´Â À̸§À¸·Î ¹Þ¾Æ ÀÌ µµ½ÃÀÇ Á¤º¸¸¦ <li> ű׷ΠÆ÷ÀåÇÏ¿© Ãâ·ÂÇÑ´Ù. mapÀº Ãâ·Â°ªÀ» ¸ð¾Æ
»õ·Î¿î ¹è¿À» ¸®ÅÏÇϸç À¥ÆäÀÌÁö¿¡ ±× ¹è¿ÀÌ ³ª¿µÈ´Ù.
mapÀº ¿ä¼Ò¸¦ Á÷Á¢ º¯ÇüÇÏÁö ¾Ê°í °¢ ¿ä¼Ò¿¡ ´ëÇØ »ç¿ëÀÚ°¡ Á¦°øÇÑ
ÇÔ¼ö¸¦ È£ÃâÇÑ ÈÄ ±× °á°ú¸¦ ¸ð¾Æ »õ·Î¿î ¹è¿À» ¸¸µç´Ù. º¯ÇüÀ» ¾î¶»°Ô ÇÒ °ÍÀΰ¡´Â »ç¿ëÀÚ ÇÔ¼ö°¡ °áÁ¤Çϴµ¥
ÀÌ ÇÔ¼ö´Â sub(value)ÀÇ ÇüŸ¦ °¡Áö°í º¯ÇüÇÑ °ªÀ» ¸®ÅÏÇÑ´Ù.
mapÀº sub ÇÔ¼ö¸¦ ºÒ·¯ ÀÏÀ» ½Ãų »ÓÀÌ´Ù. ÀÌ
µ¿ÀÛÀ» ºÐÇØÇÏ¿© Äڵ带 ´Ù½Ã ÀÛ¼ºÇØ º¸ÀÚ.
function CityList() {
function sub(city) {
return (
<li>
{city.name} : {city.region}µµ {city.area}Km2,
{city.popu}¸¸¸í
</li>
)
}
return (
<>
<h2>¿ì¸®³ª¶ó
µµ½Ã</h2>
<ul>
{cities.map(sub)}
</ul>
</>
)
}
°á°ú´Â ¹°·Ð °°´Ù. sub´Â °¢ µµ½Ã¸¦ Çϳª¾¿ Àü´Þ¹Þ¾Æ <li> ű׷Π°¨½Î°í µµ½ÃÀÇ Á¤º¸¸¦ ¹®ÀÚ¿·Î Á¶¸³ÇÑ´Ù. °´Ã¼·Î
Á¤ÀǵǾî ÀÖ´Â µµ½Ã Á¤º¸¸¦ ºÐÇØÇÏ¿© À¥ ÆäÀÌÁö¿¡ Ãâ·ÂÇÒ ¼ö ÀÖ´Â ÅÂ±× ÁýÇÕÀ¸·Î ¸¸µç´Ù.

sub°¡ ÇÑ µµ½ÃÀÇ Á¤º¸¸¦ Àß ¹Ù²ãÁÖ°í ÀÖÀ¸´Ï mapÀº ¹è¿ÀÇ µµ½Ã¸¦ Çϳª¾¿ ²¨³» sub¸¦ ºÎ¸£±â¸¸ ÇÏ¸é µÈ´Ù. ÀÌ ±¸¹®¿¡¼ sub¸¦ È»ìÇ¥ ÇÔ¼ö·Î ¹Ù²ã ÀûÀº°Ô À§ ¿¹Á¦ÀÌ´Ù. ÇÔ¼ö È£Ãâ¹® ¾È¿¡ ¶Ç ´Ù¸¥ ÇÔ¼ö Á¤Àǹ®ÀÌ ÀÖ¾î Çò°¥¸± »Ó ¿ÏÀüÈ÷ °°Àº ÄÚµåÀÌ´Ù.
¸¸¾à ÀÌ Äڵ嵵 ¾î·Æ´Ù¸é map ÇÔ¼öÀÇ µ¿ÀÛÀ» ÆòÀÌÇÑ ÄÚµå·Î ´õ ºÐÇØÇØ
º¸ÀÚ. µµ½Ã¸¦ ¹Ýº¹ ó¸®ÇÏ´Â µ¿ÀÛÀ̹ǷΠ°á±¹Àº for ¹Ýº¹¹®ÀÌ´Ù. ´ÙÀ½ ÄÚµåÀÇ arraymap ÇÔ¼ö´Â ¶È°°Àº µ¿ÀÛÀ» ÇÏ¸ç °á°ú´Â ¿ª½Ã
°°´Ù.
function CityList() {
function arraymap() {
let ar = []
for (let c in cities) {
ar.push(
<li>
{cities[c].name} : {cities[c].region}µµ
{cities[c].area}Km2, {cities[c].popu}¸¸¸í
</li>
)
}
return ar
}
return (
<>
<h2>¿ì¸®³ª¶ó
µµ½Ã</h2>
<ul>
{arraymap()}
</ul>
</>
)
}
ºó ¹è¿ ar¸¦ ¼±¾ðÇϰí
citiesÀÇ µµ½Ã¸¦ ¼øÈ¸ÇÏ¸ç °¢ µµ½Ã Á¤º¸¸¦ <li> ¿¤¸®¸ÕÆ®·Î Á¶¸³ÇÏ¿© ¹è¿¿¡
Ãß°¡ÇÑ´Ù. ·çÇÁ¸¦ ´Ù µ¹¸é µµ½Ã Á¤º¸¸¦ ¸ñ·ÏÀ¸·Î ³ª¿ÇÑ ÅÂ±× ÁýÇÕÀÌ µÈ´Ù. ÀÌ°É °¡»ó DOMÀ¸·Î ¸®ÅÏÇÏ¿© ·£´õ¸µÇϸé À¥ ÆäÀÌÁö¿¡ µµ½Ã ¸ñ·ÏÀÌ
³ªÅ¸³´Ù.
À§ ÄÚµå´Â ÆòÀÌÇØ¼ ÀÌÇØÇÏ±â ¾î·ÆÁö ¾Ê´Ù. ÇÑ ÀÛ¾÷ÀÌ µÎ ºí·ÏÀ¸·Î
³ª´©¾îÁ® º¸±â ½ÈÀºµ¥ ±×·¸´Ù¸é for ¹® ÀÚü¸¦ <ul> ¾È¿¡
³Ö¾î ¹ö¸®¸é ¾î¶³±î? JSX ¾È¿¡´Â Ç¥Çö½Ä¸¸ µé¾î°¥ ¼ö ÀÖ¾î ¸í·É¹®À» ³Ö´Â °ÍÀº ¾ÈµÈ´Ù. Á¤ ÇÏ·Á¸é À͸í ÇÔ¼ö¸¦ ¸¸µé°í ¹Ù·Î È£ÃâÇÏ´Â ¹®¹ýÀ» ¾µ ¼ö´Â ÀÖ´Ù.
function CityList() {
return (
<>
<h2>¿ì¸®³ª¶ó
µµ½Ã</h2>
<ul>
{
(() => {
let ar = []
for (let c in cities) {
ar.push(
<li>
{cities[c].name} : {cities[c].region}µµ
{cities[c].area}Km2, {cities[c].popu}¸¸¸í
</li>
)
}
return ar
}
)()
}
</ul>
</>
)
}
°ýÈ£ Áßø °ü°è°¡ º¹ÀâÇÑ´Ù. (() => { })±îÁö°¡ ¶÷´Ù
ÇÔ¼öÀÌ°í ±× µÚÀÇ ()´Â ±× ÇÔ¼ö¸¦ È£ÃâÇÏ¿© Ç¥Çö½ÄÀ» ¸®ÅÏÇÏ´Â ¹®ÀåÀÌ´Ù. Á¦ÀÏ ¹Ù±ùÀÇ { }´Â JSX°¡
Äڵ带 Æ÷ÇÔÇÒ ¶§ ¿ä±¸ÇÏ´Â °ýÈ£ÀÌ´Ù. µé¿©¾²±â¸¦ Àß ÇØ ³ö¼ ÀÚ¼¼È÷ º¸¸é °¢ °ýÈ£ÀÇ Àǹ̸¦ ÆÄ¾ÇÇÒ ¼ö
ÀÖ´Ù.

compmap ¿¹Á¦°¡ ¾ÐÃàÀûÀÌ´Ù º¸´Ï ¾ó¸¥ ´«¿¡ µé¾î¿ÀÁö ¾ÊÁö¸¸ ÀÚ¹Ù½ºÅ©¸³Æ®
¹®¹ýÀ» ÀÌÇØÇϰí ÀÖÀ¸¸é ±×¸® ¾î·Á¿î ÄÚµå´Â ¾Æ´Ï´Ù. ù ¿¹Á¦¶ó °úµµÇÏ°Ô ºÐÇØÇØ ºÃ´Âµ¥ ¸®¾×Æ®¿¡¼ È»ìÇ¥
ÇÔ¼ö¸¦ ¸¹ÀÌ ¾²¹Ç·Î ÀÏ·ÃÀÇ ÄÚµå º¯È¸¦ ¿Ïº®ÇÏ°Ô ÀÌÇØÇØ¾ß ÇÑ´Ù. ¸®¾×Æ®°¡ ¾î·Á¿î°Ô ¾Æ´Ï°í ÀÚ¹Ù½ºÅ©¸³Æ®°¡
¾î·Æ´Ù.
Ä÷º¼ÇÀ» ´Ù·ê ¶§´Â °¢ Ç׸ñ³¢¸® ±¸ºÐ °¡´ÉÇÑ Å°°¡ ÇÊ¿äÇÏ´Ù. ۸¦
ÁöÁ¤ÇÏÁö ¾Ê¾Æµµ Ãâ·Â¿¡´Â ¹®Á¦°¡ ¾øÁö¸¸ ½É°¢ÇÑ ¼º´É ÀúÇϰ¡ ¹ß»ýÇÑ´Ù. ¿¹Á¦¸¦ ½ÇÇàÇϸé ÄܼÖâ¿¡ ´ÙÀ½
°æ°í°¡ ³ªÅ¸³´Ù.
Warning: Each child in a list should have a unique
"key" prop
¸ñ·ÏÀÇ ÀÚ½Ä, ÀÌ °æ¿ì´Â °¢ µµ½Ã¿¡ À¯ÀÏÇÑ Å°°¡ ÇÊ¿äÇÏ´Ù´Â ¾ê±â´Ù. ۰¡ ÁöÁ¤µÇÁö ¾ÊÀ¸¸é Ç׸ñ³¢¸® ¸íÈ®È÷ ±¸ºÐÇÒ ¼ö ¾ø°í ÀÌ »óÅ¿¡¼´Â °Ë»öÀ̳ª °»½Å¿¡ ºÒÇÊ¿äÇÑ ½Ã°£ÀÌ ¼Ò¿äµÈ´Ù. µ¥ÀÌÅͺ£À̽º Å×ÀÌºí¿¡ PK°¡ ÇÊ¿äÇÑ ÀÌÀ¯¿Í °°´Ù.
°¢ Ç׸ñÀ» ³ª¿ÇÒ ¶§ ¿¤¸®¸ÕÆ®ÀÇ key ¼Ó¼º¿¡ Ű·Î »ç¿ëÇÒ °ªÀ» ÁöÁ¤ÇÑ´Ù. µµ½Ã ¸ñ·Ï¿¡¼ Ű·Î »ç¿ëÇÒ¸¸ÇÑ Ç׸ñÀº ´ç¿¬È÷ À̸§ÀÌ´Ù. Àü¶óµµ ±¤ÁÖ, °æ±âµµ ±¤ÁÖó·³ Áߺ¹µÇ´Â ¿¹°¡ ÀÖÁö¸¸ Àû¾îµµ ÀÌ Å×ÀÌºí¿¡´Â ¾ø´Ù.
compmap¿¹Á¦¿¡ ´ÙÀ½°ú °°ÀÌ city.nameÀ» Ű·Î ÁöÁ¤ÇÑ´Ù.
<li key={city.name}>
¸¸¾à Ű·Î ÁöÁ¤ÇÒ¸¸ÇÑ Á¤º¸°¡ ¾ø´Ù¸é mapÀÇ Äݹé ÇÔ¼ö·Î ¹è¿ÀÇ Ã·ÀÚÀÎ index¸¦ ¹Þ¾Æ ¼ø¼°ªÀÌ¶óµµ Å°·Î ÁöÁ¤ÇØ¾ß ÇÑ´Ù.
{cities.map((city, index) =>
<li key={index}>
¼ø¼°ªÀº ÆíÁýÀ̳ª Á¤·Ä¿¡ ÀÇÇØ ¹Ù²ð À§ÇèÀÌ ÀÖÁö¸¸ ´Ü¼øÈ÷ ¼ø¼´ë·Î Ãâ·Â¸¸ ÇÑ´Ù¸é Ű·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù. Á¤ °íÀ¯Å°°¡ ¾ø´Ù¸é ¿øº» µ¥ÀÌÅÍ¿¡ ¹®Á¦°¡ ÀÖ´Â °ÍÀ̹ǷΠ¿øº»ºÎÅÍ Á¤±ÔÈÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù.
۸¦ ÁöÁ¤Çß´Ù°í ÇØ¼ µüÈ÷ ´Þ¶óÁö´Â °Ç ¾ø°í ½ÇÇà °á°ú´Â °°´Ù. ´Ù¸¸
ÄܼÖâ¿¡ °æ°í¸¸ »ç¶óÁú »ÓÀÌ´Ù. ÀÌ ¿¹Á¦¿¡¼´Â º° Â÷À̰¡ ¾øÁö¸¸ »ðÀÔ,
»èÁ¦°¡ ÀæÀ» ¶§´Â ۰¡ ÀÖ´Â °æ¿ì¿Í ¾ø´Â °æ¿ìÀÇ ¼º´ÉÂ÷°¡ È®¿¬È÷ ¹ú¾îÁø´Ù.
key ¼Ó¼ºÀº ¸®¾×Æ® ¶óÀ̺귯¸®¿¡°Ô Àü´ÞµÇ´Â ÀÏÁ¾ÀÇ ÃÖÀûÈ ÈùÆ®ÀÌ´Ù. ÀÌ Á¤º¸°¡ ÀÖÀ¸¸é ƯÁ¤ Ç׸ñÀÌ º¯°æµÉ ¶§ ¸ñ·Ï Àüü¸¦ °»½ÅÇÒ ÇÊ¿ä ¾øÀÌ
key·ÎºÎÅÍ °»½ÅÇÒ ³ëµå¸¦ Á¤È®È÷ ã¾Æ µü ±× ºÎºÐ¸¸ °»½ÅÇÒ ¼ö ÀÖ¾î ¼Óµµ°¡ »¡¶óÁø´Ù.
ArrayÀÇ filter ¸Þ¼µå´Â
Á¶°Ç¿¡ ¸Â´Â Ç׸ñ¸¸ ã¾Æ »õ·Î¿î ¹è¿À» »ý¼ºÇÑ´Ù. »ç¿ëÀÚ ÇÔ¼ö·Î °¢ ¿ä¼Ò¸¦ Àü´ÞÇϸç ÀÌ ÇÔ¼ö°¡ true¸¦ ¸®ÅÏÇÏ´Â Ç׸ñ¸¸À¸·Î »õ·Î¿î ¹è¿À» ¸¸µç´Ù. °¢ Ç׸ñÀÇ ¿øÇÏ´Â
¸â¹ö¸¦ Á¡°ËÇÏ¿© Á¶°Ç¿¡ ¸Â´Â °Í¸¸ °ñ¶ó ³»¸é µÈ´Ù. ´ÙÀ½ ¿¹Á¦´Â Àα¸
100¸¸ ÀÌ»óÀÎ µµ½Ã¸¸ Ãâ·ÂÇÑ´Ù.
function
CityList() {
const bigcity = cities.filter(city =>
city.popu > 100)
return (
<>
<h2>¿ì¸®³ª¶ó
µµ½Ã</h2>
<ul>
{bigcity.map(city =>
<li key={city.name}>
{city.name} : {city.region}µµ {city.area}Km2,
{city.popu}¸¸¸í
</li>
)}
</ul>
</>
)
}
city.popu > 100 Á¶°ÇÀ» ¸¸Á·ÇÏ´Â µµ½Ã¸¸ bigcity ¹è¿¿¡ ³Ö¾ú´Ù. bigcity´Â ¿øº»ÀÎ cities ¹è¿¿¡¼ Á¶°Ç¿¡ ¸Â´Â °Í¸¸ ÇÊÅ͸µÇÑ »õ·Î¿î ¹è¿ÀÌ´Ù. mapÀ¸·Î bigcity¸¦ ¼øÈ¸Çϸé ÇÊÅ͸µÇÑ µµ½Ã¸¸ ³ªÅ¸³´Ù.

bigcity¸¦ »ý¼ºÇÏ´Â
filter È£Ãâ¹®Àº return ÀÌÀü¿¡ ÀÖ¾î¾ß ÇÏ¸ç ¹Ì¸® °¡°øÀ» ÇØ µÎ¾î¾ß ÇÑ´Ù. return¹® ¾È¿¡ ³ÖÀ¸¸é ÇÊÅ͸µÇÑ ÈÄ ¹Ù·Î Ãâ·ÂÇÒ ¼ö ÀÖ¾î ±ò²ûÇϰÚÁö¸¸ ÀÌ°Ç ¾ÈµÈ´Ù.
function CityList() {
return (
<>
<h2>¿ì¸®³ª¶ó
µµ½Ã</h2>
<ul>
{
const bigcity =
cities.filter(city => city.popu > 100)
bigcity.map(city
=>
<li key={city.name}>
{city.name} : {city.region}µµ {city.area}Km2,
{city.popu}¸¸¸í
</li>
)}
</ul>
</>
)
}
ÀÌ ¾ÈÀº JSX ¿µ¿ªÀ̱⠶§¹®¿¡ ¸í·ÉÀº µé¾î°¥ ¼ö ¾ø°í µü ÇϳªÀÇ
°á°ú¸¦ ¸®ÅÏÇϴ ǥÇö½Ä¸¸ µé¾î°¥ ¼ö ÀÖ´Ù. ÇÔ¼ö¸¦ È£ÃâÇÏ°í ±× °á°ú¸¦ º¯¼ö¿¡ ´ëÀÔÇÏ´Â °ÍÀº ¸í·ÉÀÌÁö
Ç¥Çö½ÄÀÌ ¾Æ´Ï´Ù. Á¤ ÇÑ °÷¿¡¼ ÇÊÅ͸µ°ú Ãâ·ÂÀ» °°ÀÌ ÇÏ·Á¸é ÇÊÅ͸µ ÈÄ ¹Ù·Î ¿¬¼âÀûÀΠȣÃâ·Î Ãâ·ÂÇÒ
¼ö´Â ÀÖ´Ù.
function CityList() {
return (
<>
<h2>¿ì¸®³ª¶ó
µµ½Ã</h2>
<ul>
{cities.filter(city => city.popu > 100).map(city =>
<li key={city.name}>
{city.name} : {city.region}µµ {city.area}Km2,
{city.popu}¸¸¸í
</li>
)}
</ul>
</>
)
}
filter ¸Þ¼µå È£ÃâÀÇ °á°ú´Â ¹è¿À̹ǷΠÀÌ ¹è¿¿¡ ´ëÇØ map ¸Þ¼µå¸¦ È£ÃâÇÒ ¼ö ÀÖ°í mapÀÇ °á°ú´Â °¡»ó DOMÀ¸·Î º¯È¯ÇÑ Ç¥Çö½ÄÀ̹ǷΠº° ¹®Á¦ ¾ø´Ù. ´Ù¸¸ »ç¶÷ÀÌ º¸±â¿¡
°¡µ¶¼ºÀÌ ÁÁÁö´Â ¾Ê´Ù. ÀÌ·² ¶§´Â ÆòÀÌÇÏ°Ô ¹Û¿¡¼ ÇÊÅ͸µÀ» ¸ÕÀú ÇÏ´Â°Ô ÁÁ´Ù.
filter(city => ´ÙÀ½¿¡ ¿øÇÏ´Â Á¶°Ç½ÄÀ» ³Ö¾î ÇÊÅ͸µÀº
¾ó¸¶µçÁö ¹Ù²Ü ¼ö ÀÖ´Ù. ³í¸®½ÄÀ¸·Î Æò°¡ÇÒ ¼ö¸¸ ÀÖ´Ù¸é ¾î¶² Á¶°ÇÀÌµç ¾µ ¼ö ÀÖ´Ù. ´ÙÀ½Àº ¸î °¡Áö ¿¹ÀÌ´Ù.
¸éÀû 500 Ãʰú city =>
city.area > 500
À̸§¿¡ 'ÁÖ'ÀÚ°¡ µé¾î°¡´Â µµ½Ã city => city.name.search('ÁÖ') != -1
Àα¸ 80 ¹Ì¸¸ ¶Ç´Â ¸éÀû 1000Ãʰú
city => city.popu < 80 || city.area > 1000
ºñ±³ ¿¬»êÀÚ, ³í¸® ¿¬»êÀÚ, ÇÔ¼ö
È£Ãâ µîÀ» ÅëÇØ true ¶Ç´Â false Áß Çϳª¸¦ ¸®ÅÏÇϸé
µÈ´Ù.
Á¶°Ç¿¡ µû¶ó ´Ù¸£°Ô Ãâ·ÂÇØ¾ß ÇÏ´Â °æ¿ì°¡ ¸¹´Ù. ¿¹¸¦ µé¾î ±¤¿ª½ÃÀÎ
°æ¿ì´Â Ưº°³ Ç¥½ÄÀ» ºÙÀδٰųª Àα¸¼ö¿¡ µû¶ó Å©±â¸¦ ´Ù¸£°Ô Ãâ·ÂÇÒ ¼ö ÀÖ´Ù. cities ¹è¿¿¡´Â metro°¡ ÁøÀ§ÇüÀε¥ trueÀ̸é
' ±¤¿ª½Ã'¸¦ ºÙÀ̰í falseÀ̸é '½Ã'¸¸ ºÙ¿© º¸ÀÚ. Áï
¼¿ïÀº ¼¿ï ±¤¿ª½Ã·Î Ç¥½ÃÇϰí ÀüÁÖ´Â ÀüÁֽ÷Πǥ½ÃÇÏ´Â °ÍÀÌ´Ù.
¸®¾×Æ®¿¡¼ Á¶°ÇÀ» ó¸®ÇÏ´Â ¹æ¹ýÀº Å©°Ô ¼¼ °¡Áö°¡ ÀÖ´Ù. °¢ ¹æ¹ý¸¶´Ù
Àå´ÜÁ¡ÀÌ ÀÖ°í »óȲ¿¡ µû¶ó ÀûÀýÇÑ ¹æ¹ýÀÌ ÀÖ¾î ´Ù ¾Ë¾Æ µÎ¾î¾ß ÇÑ´Ù. ¶Ç JSX ¾È¿¡¼ Á¶°ÇÀ» ó¸®ÇÏ´Â ¹æ¹ýÀÌ ´Þ¶ó ¸®¾×Æ®¸¦ ÀÌÇØÇϴµ¥µµ ÇʼöÀûÀÎ ±â¹ýÀÌ´Ù.
1.Á¶°ÇÀ» ó¸®ÇÏ´Â ¿ø·ÐÀûÀÎ ¹æ¹ýÀº
if¹®ÀÌ´Ù. metro ÇʵåÀÇ °ª¿¡ µû¶ó µÚ¿¡ ºÙÀÏ Á¢¹Ì¾î¸¦ if ¹®À¸·Î ¼±ÅÃÇÏ¿© {city.name}µÚ¿¡ µ¡ºÙÀδÙ. ÄÚµå·Î Â¥ º¸¸é ´ÙÀ½°ú °°´Ù.
function CityList() {
return (
<>
<h2>¿ì¸®³ª¶ó
µµ½Ã</h2>
<ul>
{cities.map(city =>
<li key={city.name}>
{city.name}{if (city.metro) return ' ±¤¿ª½Ã' else return '½Ã'}
: {city.region}µµ {city.area}Km2, {city.popu}¸¸¸í
</li>
)}
</ul>
</>
)
}
¾ðµí º¸±â¿¡´Â µÉ °Å °°Áö¸¸ µ¿ÀÛÇÏÁö ¾Ê´Â´Ù. ¿Ö³ÄÇϸé JSX ³»ÀÇ { } °ýÈ£¾È¿¡´Â Ç¥Çö½Ä¸¸ ¾µ ¼ö ÀÖ°í ¸í·ÉÀº µé¾î°¥
¼ö ¾ø±â ¶§¹®ÀÌ´Ù. if returnÀº °á°úÀûÀ¸·Î´Â °ªÀ» ¸®ÅÏÇÏÁö¸¸ Çü½Ä»ó ÀÓÀÇÀÇ ¸ðµç µ¿ÀÛÀ» ÇÒ ¼ö
ÀÖ´Â ¸í·É¹®ÀÌ´Ù. ¶Ç { } ºí·ÏÀÌ ÇÔ¼ö°¡ ¾Æ´Ñµ¥ returnÀ» ¾´´Ù´Â °ÍºÎÅÍ ¹®¹ýÀûÀ¸·Î ¸»ÀÌ ¾ÈµÈ´Ù.
±×·¸´Ù°í if ¹®ÀÌ ²À ºÒ°¡´ÉÇÑ °ÍÀº ¾Æ´Ï´Ù. JSX ¾È¿¡¼ ¸í·É¹®À» ¾µ ¼ö ¾ø´Ù¸é JSX ¹ÛÀ¸·Î »©³»¸é µÈ´Ù. if ¹®À¸·Î Ãâ·ÂÇÒ ¹®ÀÚ¿À» º°µµÀÇ º¯¼ö¿¡ ¸ÕÀú ¼±ÅÃÇØ ³õ°í ÀÌ º¯¼ö¸¦
JSX±¸¹®¿¡ ¾²¸é µÈ´Ù.
function
CityList() {
return (
<>
<h2>¿ì¸®³ª¶ó
µµ½Ã</h2>
<ul>
{cities.map(city
=>
{
let isMetro
if (city.metro) {
isMetro = ' ±¤¿ª½Ã'
} else {
isMetro = '½Ã'
}
return <li key={city.name}>
{city.name}{isMetro} : {city.region}
µµ {city.area}Km2, {city.popu}¸¸¸í
</li>
}
)}
</ul>
</>
)
}
isMetro º¯¼ö¸¦ ¼±¾ðÇϰí Á¶°Ç¿¡ µû¶ó ÀÌ º¯¼öÀÇ °ªÀ» °áÁ¤ÇÑ´Ù. ÀÌ ±¸¹®À» ¾µ ¼ö ÀÖ´Â ÀÌÀ¯´Â À͸í ÇÔ¼ö ¾ÈÀ̱⠶§¹®ÀÌ´Ù. cities.map
È£Ãâ¹®Àº JSX¾È¿¡ ÀÖÁö¸¸ city => { } ºí·ÏÀº mapÀ¸·Î Àü´ÞµÇ´Â ÇÔ¼öÀÏ »ÓÀÌ´Ù. ±×·¡¼ Áö¿ª º¯¼ö¸¦ ¼±¾ðÇÒ ¼ö
ÀÖ°í if¹®µµ ¾µ ¼ö ÀÖ´Ù.
JSX ±¸¹®¿¡¼´Â °áÁ¤µÈ º¯¼ö°ªÀ» »ðÀÔÇÑ´Ù. ³í¸®´Â °£´ÜÇÏÁö¸¸ È»ìÇ¥ ÇÔ¼ö¾È¿¡ µÎ °³ ÀÌ»óÀÇ ¸í·ÉÀÌ µé¾î ÀÖ¾î Çü½ÄÀÌ º¹ÀâÇÏ´Ù. º»Ã¼¸¦ { } °ýÈ£·Î Çѹø ´õ °¨½Î¾ß Çϰí Ç¥Çö½Ä ÀÌÀü¿¡ ¸í·ÉÀÌ
µé¾î°¬À¸¹Ç·Î °¡»óDOMÀ» returnÇÏ´Â ¸í·Éµµ ÇÊ¿äÇÏ´Ù.
¼¿ï ±¤¿ª½Ã´Â ¶ç¿ì°í ÀüÁֽô ºÙ¿©¾ß ÇÏ´Ï {city.name}{isMetro}
»çÀÌ¿¡´Â °ø¹éÀÌ ¾ø¾î¾ß Çϰí Á¢¹Ì¿¡ Çʿ信 µû¶ó °ø¹éÀ» ³Ö¾î¾ß ÇÑ´Ù. °ø¹é 󸮸¦ À߸øÇϸé
ûÁÖ ½Ã, ÀüÁÖ ½Ã µîÀ¸·Î ºÒÇÊ¿äÇÑ °ø¹éÀÌ µé¾î°£´Ù. ¹ø°Å·ÓÁö¸¸
¾î·°Å³ª °¡´ÉÀº ÇÏ´Ù. if ¹®Àº ¿ø·ÐÀûÀÎ Á¶°Ç 󸮹®À̰í ÀÌ ¾È¿¡¼´Â º¹ÀâÇÑ Á¶°ÇÀ» Æò°¡ÇÒ ¼ö ÀÖ´Ù´Â
¸é¿¡¼ À¯¿¬ÇÏ´Ù.
2.Á¶°ÇÀ» ó¸®ÇÏ´Â µÎ ¹øÂ° ¹æ¹ýÀº »ïÇ×Á¶°Ç ¿¬»êÀÚÀÎ ?:ÀÌ´Ù. µÑ Áß Çϳª¸¦ °í¸£±â¸¸ ÇÑ´Ù¸é if¹® º¸´Ù ª°í °¡µ¶¼ºµµ ³ô´Ù.
function CityList() {
return (
<>
<h2>¿ì¸®³ª¶ó
µµ½Ã</h2>
<ul>
{cities.map(city =>
<li key={city.name}>
{city.name}{city.metro ? ' ±¤¿ª½Ã':'½Ã'} : {city.region}
µµ {city.area}Km2, {city.popu}¸¸¸í
</li>
)}
</ul>
</>
)
}
?:Àº ÇϳªÀÇ °ªÀ» ¸®ÅÏÇϴ ǥÇö½ÄÀ̹ǷΠJSX³»¿¡¼ ÀÚÀ¯·Ó°Ô »ç¿ëÇÒ ¼ö ÀÖ´Ù. Áß°£ º¯¼öµµ ÇÊ¿ä¾ø°í Á¶°Ç
ÆÇ´ÜÀÌ ÇÊ¿äÇÑ °÷¿¡ ¹Ù·Î ½á¸ÔÀ» ¼ö ÀÖ¾î Æí¸®ÇÏ´Ù. µÑ Áß ÇϳªÀÇ °ªÀ» ¹ÝȯÇÏ´Â if else¸¦ ¿Ïº®È÷ ´ëüÇÒ ¼ö ÀÖ´Ù.
µÎ °³ÀÇ Á¶°ÇÀ» Á¡°ËÇÏ´Â ´ÙÁß ¼±Åõµ »ïÇ× Á¶°Ç ¿¬»êÀÚ¸¦ ÁßÃ¸ÇØ¼ ¾²¸é µÈ´Ù.
¿¹¸¦ µé¾î ±¤¿ª½Ã Áß¿¡µµ ¼¿ïÀº ´õ Ưº°³ª°Ô Ç¥½ÃÇÏ°í ½Í´Ù¸é metro°¡ trueÀÓÀ» Á¡°ËÇÑ ÈÄ Çѹø ´õ À̸§À» Á¡°ËÇØ º¸¸é µÈ´Ù.
function CityList() {
return (
<>
<h2>¿ì¸®³ª¶ó
µµ½Ã</h2>
<ul>
{cities.map(city =>
<li key={city.name}>
{city.name}{city.metro ? (city.name == '¼¿ï' ?' Ưº°½Ã':' ±¤¿ª½Ã'):'½Ã'} :
{city.region}
µµ {city.area}Km2, {city.popu}¸¸¸í
</li>
)}
</ul>
</>
)
}
¼¿ïÀº Ưº°½Ã·Î Ç¥½ÃÇÏ°í ºÎ»êÀº ±¤¿ª½Ã·Î Ç¥½ÃÇÑ´Ù. Äڵ尡 ¾à°£ º¹ÀâÇÏÁö¸¸
µÎ ¹ø Áßø Á¤µµ´Â Å« ¹®Á¦°¡ µÇÁö ¾Ê´Â´Ù. JSX ±¸¹® ³»¿¡¼ °ªÀ» ¼±ÅÃÇÒ ¶§´Â »ïÇ× Á¶°Ç ¿¬»êÀÚ¸¦
¾²´Â °ÍÀÌ ÇÕ¸®ÀûÀÌ´Ù.
3.¼¼¹øÂ° ¹æ¹ýÀº ³í¸® ¿¬»êÀÚÀÇ ¼îÆ®¼Å°Æ®¸¦ Ȱ¿ëÇÏ´Â °ÍÀÌ´Ù.
function CityList() {
return (
<>
<h2>¿ì¸®³ª¶ó
µµ½Ã</h2>
<ul>
{cities.map(city =>
<li key={city.name}>
{city.name}{city.metro && ' ±¤¿ª½Ã'}{city.metro
|| '½Ã'} : {city.region}
µµ {city.area}Km2, {city.popu}¸¸¸í
</li>
)}
</ul>
</>
)
}
city.metro°¡ ÂüÀÏ ¶§¸¸ µÚÂÊ ½ÄÀ» Æò°¡ÇÏ¿© ¸®ÅÏÇÏ°í °ÅÁþÀ̸é
Àüü¸¦ ¹«½ÃÇÑ´Ù. Ç¥Çö½Ä Çϳª¸¦ ¸®ÅÏÇϹǷΠJSX¿¡¼ »ç¿ëÇÒ
¼ö ÀÖ´Ù. ¹Ý´ë·Î city.metro°¡ falseÀÏ ¶§¸¦ ¼±ÅÃÇÏ°í ½Í´Ù¸é || ¿¬»êÀÚ¸¦ »ç¿ëÇÑ´Ù.
¼îÆ® ¼Å°Æ®´Â ¾ÕÂÊ ³í¸®½ÄÀÇ ÁøÀ§ ¿©ºÎ¿¡ µû¶ó µÚÂÊ Á¶°ÇÀÇ Æò°¡ ¿©ºÎ¸¦ °áÁ¤ÇÑ´Ù´Â ¸é¿¡¼ °£ÆíÇÏ´Ù. ±×·¯³ª ÇϳªÀÇ Á¶°Ç¿¡ ´ëÇØ¼¸¸ ó¸®ÇÒ ¼ö ÀÖ¾î if¹®À» ´ëüÇÒ ¼ö´Â
À־ if else¸¦ ´ëüÇÒ ¼ö´Â ¾ø´Ù. ±×·¡¼ Âü, °ÅÁþ¿¡ ´ëÇØ °¢°¢ Á¶°Ç Æò°¡¸¦ µû·Î ÇØ¾ß ÇÑ´Ù.
Äڵ尡 ª´Ù´Â ¸é¿¡¼ ½Ç¿ëÀûÀÌÁö¸¸ ¼îÆ® ¼Å°Æ®¸¦ Àß ¸ð¸£´Â »ç¶÷¿¡°Ô´Â ²Ï »ý¼ÒÇÑ ÄÚµå¶ó Á÷°üÀûÀÌÁö´Â ¾Ê´Ù. ÀÌ·¸°Ôµµ ¾µ ¼ö ÀÖ´Ù´Â °ÍÀÌÁö »ïÇ×Á¶°Ç ¿¬»êÀÚº¸´Ù µüÈ÷ ´õ ½¬¿î °ÍÀº ¾Æ´Ï´Ù.
¹è¿ÀÇ Á¤·ÄÀº Array.sort ¸Þ¼µå·Î ó¸®ÇÑ´Ù. sort´Â »ç¿ëÀÚ ÇÔ¼ö·Î µÎ ¿ä¼Ò¸¦ Àü´ÞÇÏ°í ¸®ÅϰªÀ¸·Î ¼ø¼¸¦ ÆÇ´ÜÇÏ¿© Àç¹èÄ¡ÇÑ´Ù. ¿ÞÂÊÀÌ ´õ ¾ÕÂÊÀ̸é À½¼ö, °°À¸¸é ¾ç¼ö, ¿À¸¥ÂÊÀÌ ´õ ¾ÕÂÊÀÌ¸é ¾ç¼ö¸¦ ¸®ÅÏÇÑ´Ù. Á¤¼ö°ªÀº »¬¼ÀÀ¸·Î ´õ ÀÛÀº°ªÀÌ
¾Õ¿¡ ¿Àµµ·Ï ÇÏ¿© ¿À¸§Â÷¼øÀ¸·Î Á¤·ÄÇÑ´Ù. ¹è¿ Ãâ·Â ¿¹Á¦¿¡ ´ÙÀ½ ¹®Àå Çϳª¸¸ ³ÖÀ¸¸é Àα¸ÀÇ ¿À¸§Â÷¼øÀ¸·Î
Á¤·ÄÇÑ´Ù.
function CityList() {
cities.sort((c1, c2) => c1.popu - c2.popu)
return (
....
sort ¸Þ¼µå´Â mapÀ̳ª filter¿Í´Â ´Þ¸® »õ·Î¿î ¹è¿À» ¸®ÅÏÇÏÁö ¾Ê°í ¹è¿ ÀÚü¸¦ Á¤·ÄÇÑ´Ù. »çº»
¹è¿À» ´ëÀÔÇÒ ÇÊ¿ä´Â ¾ø°í Ãâ·ÂÇϱâ Àü¿¡ Á¤·Ä¸¸ ÇÏ¸é µÈ´Ù.

³»¸²Â÷¼øÀ¸·Î Á¤·ÄÇÏ·Á¸é c2.popu - c1.popuÀ¸·Î ¼ø¼¸¦
¹Ù²Û´Ù. »¬¼À °á°úÀÇ ºÎÈ£°¡ ¹Ù²î¹Ç·Î Á¤·Äµµ ¿ª¼øÀÌ µÈ´Ù.
¹®ÀÚ¿³¢¸® ºñ±³ ¿¬»êÀÚ¸¦ ¾²¸é »çÀü¼øÀ¸·Î ´©°¡ ´õ ¾ÕÂÊÀÎÁö´Â ¾Ë ¼ö ÀÖÁö¸¸ °°ÀºÁö±îÁö ¾Ë¾Æ³»·Á¸é Á¶°Ç¹®ÀÌ ÇÊ¿äÇÏ´Ù. »¬¼À ¿¬»êÀÚ¸¦ ¾µ¼ö´Â ¾ø°í ´ë½Å localeCompare ¸Þ¼µå·Î
ºñ±³Çϸé Á¤·Ä¿¡ ÇÊ¿äÇÑ ¼¼ °¡Áö »óŸ¦ ¸®ÅÏÇÑ´Ù. ´ÙÀ½ ÄÚµå´Â ¼Ò¼Ó Áö¿ª¿¡ ´ëÇÑ ¿À¸§Â÷¼øÀ¸·Î Á¤·ÄÇÑ´Ù.
cities.sort((c1, c2) =>
c1.region.localeCompare(c2.region))
2Â÷ Á¤·Ä±îÁö ÇÏ·Á¸é ´õ º¹ÀâÇÑ Äڵ尡 ÇÊ¿äÇÏ´Ù. ¿¹¸¦ µé¾î ±¤¿ª½Ã¸¦ ¿ì¼± ¹èÄ¡ÇÏ°í °°Àº ±Þ³¢¸®´Â ¸éÀûÀÇ ¿À¸§Â÷¼øÀ¸·Î Á¤·ÄÇÏ·Á¸é ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.
function
CityList() {
cities.sort((c1, c2) => {
if (c1.metro == c2.metro) {
return c1.area -
c2.area
} else if (c1.metro) {
return -1;
} else {
return 1;
}
})
return (
<>
<h2>¿ì¸®³ª¶ó
µµ½Ã</h2>
<ul>
{cities.map(city =>
<li key={city.name}>
{city.name} : {city.region}µµ {city.area}Km2,
{city.popu}¸¸¸í
</li>
)}
</ul>
</>
)
}
±¤¿ª½Ã´Â ³»¸²Â÷¼øÀÌ°í ¸éÀûÀº ¿À¸§Â÷¼øÀÌ´Ù.

¿µ¹®ÀÇ °æ¿ì ´ë¼Ò¹®ÀÚ ¹«½Ã, Çѱ۰ú ¿µ¹®ÀÇ ¼ø¼, ¼±ÇàÁ¦·Î°¡ ÀÖ´Â ¼ýÀÚ³¢¸®ÀÇ ºñ±³ µî¿¡ ´ëÇØ¼µµ ºñ±³ ÇÔ¼ö¸¦ Á¤È®È÷ ÀÛ¼ºÇØ¾ß ÇÑ´Ù.