[๋ฉ‹์Ÿ์ด ์‚ฌ์ž์ฒ˜๋Ÿผ] ๋ฉ‹์‚ฌ ํ”„๋ก ํŠธ์—”๋“œ ์Šค์ฟจ 5๊ธฐ 11์ฃผ์ฐจ 4LS ํšŒ๊ณ  (Props, useState, Router, Styled-Components)

2023. 5. 16. 19:57ใ†๋ฉ‹์Ÿ์ด์‚ฌ์ž์ฒ˜๋Ÿผ

๋ฐ˜์‘ํ˜•

[๋ฉ‹์Ÿ์ด ์‚ฌ์ž์ฒ˜๋Ÿผ] ๋ฉ‹์‚ฌ ํ”„๋ก ํŠธ์—”๋“œ ์Šค์ฟจ 5๊ธฐ 11์ฃผ์ฐจ 4LS ํšŒ๊ณ  (Props, useState, Router, Styled-Components)

 โค๏ธ‍๐Ÿ”ฅ Liked
  • ์š”์ฆ˜ React ์ˆ˜์—…์€ ์žฌํ˜„๋‹˜์ด ๋ฐ˜๋ณต ํ•™์Šต์„ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋‹ค. ์ถ”๊ฐ€๋กœ ์ฝ”์–ด์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ง€์€์ด ์žฌ๋‚จ๋‹˜์ด ๋ฒˆ์—ญํ•˜์‹  React ๊ณต์‹๋ฌธ์„œ๋ฅผ ์ฝ์œผ๋ฉด์„œ ๋ณด์™„ํ•™์Šต์„ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์–ด์„œ Component, Props, State์— ๋Œ€ํ•œ ๊ฐœ๋…์€ ์–ด๋ ต์ง€ ์•Š๊ฒŒ ์žก์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋ฆฌ์•กํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์‚ฌ์šฉ ๋ชฉ์ ์ด ์žฌ์‚ฌ์šฉ์„ฑ์„ ์œ„ํ•ด ์ƒํƒœ์— ๋”ฐ๋ผ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉ์ž ์ •์˜ ์š”์†Œ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ๋™์ž‘ ์›๋ฆฌ์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ์žก๋Š” ๊ฒƒ์„ ์ค‘์ ์œผ๋กœ ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ๋‹ค.
  • ํ”„๋กœ์ ํŠธ ์กฐํŽธ์„ฑ์„ ์œ„ํ•ด ๊ฐ๊ด€์‹๋ฌธํ•ญ์„ ๋น„๋กฏํ•œ ๊ฐ„๋‹จํ•œ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ๋Š”๋ฐ ์‹œ๊ฐ„ ๋‚ด์— Javascript ๋™์ž‘์ด ๋˜๋„๋ก ๊ตฌํ˜„์€ ํ•ด๋ƒˆ๋‹ค. ์ฝ”๋“œ ํ’ˆ์งˆ์€ ๊ฐœ์„ ํ•ด์•ผ๊ฒ ์ง€๋งŒ ์—ด์‹ฌํžˆ ์ˆœ์„œ๋„๋ฅผ ๊ทธ๋ฆฌ๋Š” ์—ฐ์Šต์„ ํ–ˆ๋˜ ๊ฒฐ๊ณผ๊ฐ€ ๋Œ์•„์˜จ ๊ฒƒ ๊ฐ™์•„์„œ ๋ฟŒ๋“ฏ!
  • React๋„ JS ๊ธฐ๋ฐ˜์˜ ์–ธ์–ด์ด๋‹ค ๋ณด๋‹ˆ JS ๋ฌธ๋ฒ•์ด ๋‚˜์˜ฌ ๋•Œ๊ฐ€ ๋งŽ์€๋ฐ, JS๋งŒ ๊ณต๋ถ€ํ•  ๋•Œ๋Š” ์–ด๋ ต๋‹ค๊ณ  ๋„˜์–ด๊ฐ”๋˜ ๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น๊ณผ ๊ฐ™์€ ๊ธฐ์ˆ ์ด ์†์— ์ต์ˆ™ํ•ด์ง€๋Š” ๊ธฐ๋ถ„์ด๋ผ ์ข‹๋‹ค. ๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น์— ๋Œ€ํ•œ ๋ณด์™„ ํ•™์Šต ๋ฌธ์„œ๋Š” ๋ชจ๋˜์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ถ”์ฒœ https://ko.javascript.info/destructuring-assignment

 

 

 ๐Ÿ’ฃ Lacked
  • ๋ณ‘์•„๋ฆฌ๋ฐ˜ ์Šคํ„ฐ๋””์—์„œ ์นด๋“œ ๋’ค์ง‘๊ธฐ ๋ฏธ๋‹ˆ๊ฒŒ์ž„์„ ๋งŒ๋“ค์—ˆ๋‹ค.
    "DOM์œผ๋กœ ์นด๋“œ ์š”์†Œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , forEach๋กœ ์ˆœํšŒํ•˜๋ฉด์„œ ํด๋ฆญ์ด๋ฒคํŠธ๊ฐ€ ๋‘๋ฒˆ ๋ฐœ์ƒํ•˜๊ธฐ๊นŒ์ง€ innerText๋ฅผ ๋น„๊ตํ•œ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ   ์ดˆ๊ธฐํ™”ํ•œ๋‹ค." ๊ฐ„๋‹จํ•˜๊ฒŒ ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ๋งŒ๋“ค๋‹ค ๋ณด๋‹ˆ ์ž˜ ๋˜์ง€ ์•Š์•„์„œ ์œ ํŠœ๋ธŒ๋ฅผ ๋ณด๋ฉด์„œ ์ฝ”๋“œ๋ฅผ ๋ณด์™„ํ–ˆ๋‹ค. ๐Ÿฅน
    return์„ ์‹คํ–‰ํ•ด์•ผํ•˜๋Š” ์ฝ”๋“œ, ์ดˆ๊ธฐํ™”๊ฐ€ ํ•„์š”ํ•œ ๋ถ€๋ถ„, ์˜ˆ์™ธ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ๋ฌธ์ œ ๋•Œ๋ฌธ์— ํ•œ์ฐธ ํ—ค๋งธ๋Š”๋ฐ ๋•๋ถ„์— ๋ฐฐ์šด ๊ฒƒ๋„ ๋งŽ์•˜๋‹ค...~
    ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์‹ถ์ง€๋งŒ ๋„ˆ๋ฌด ๋Š๋ฆฟ๋Š๋ฆฟ... 
  • React ์žฌ๋ฏธ๋Š” ์žˆ๋Š”๋ฐ ์‹ค์Šต์ด ๋ถ€์กฑํ•ด์„œ ์ž˜ ๋ชปํ•˜๋ฉด ๊ฒ‰ํ•ฅ๊ธฐ ์‹์œผ๋กœ๋งŒ ๋ฐฐ์šฐ๊ณ  ๋„˜์–ด๊ฐˆ ๊ฒƒ ๊ฐ™๋‹ค. ์‹ค์Šต์„ ๋” ๋งŽ์ด ํ•ด๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.
 

GitHub - JAYCODE-git/minigame: ๋ ˆํŠธ๋กœ ๋ฏธ๋‹ˆ๊ฒŒ์ž„ ๋ชจ์Œ์ง‘

๋ ˆํŠธ๋กœ ๋ฏธ๋‹ˆ๊ฒŒ์ž„ ๋ชจ์Œ์ง‘. Contribute to JAYCODE-git/minigame development by creating an account on GitHub.

github.com

 

 

 

 โœ๏ธ Learned
  • ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์—ฌ๋Ÿฌ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๋™์‹œ์— return ํ•ด์•ผ ํ•  ๊ฒฝ์šฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ.
    Fragements ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ„๋„์˜ ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ณ  ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž์‹์„ ๊ฐ์‹ธ์ค„ ์ˆ˜ ์žˆ๋‹ค. <> </> ๋‹จ์ถ• ์†์„ฑ์œผ๋กœ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.
  • ์ปดํฌ๋„ŒํŠธ์˜ ์ด๋ฆ„์„ ์ง€์„ ๋•Œ๋Š” ์ฒซ ๊ธ€์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ์ž‘์„ฑํ•ด์•ผ ์ปดํฌ๋„ŒํŠธ๋กœ ํ•ด์„๋œ๋‹ค.
  • props๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค ๋•Œ ๋„ฃ์–ด์ค„ ์ˆ˜ ์žˆ๋Š” ์†์„ฑ์˜ ์ง‘ํ•ฉ. ๋ฌธ์ž์—ด ์ˆซ์žํ˜• JSX ๊นŒ์ง€ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ธธ ์ˆ˜ ์žˆ๋‹ค.
  • JSX ์•ˆ์—์„œ๋Š” ์–ด๋– ํ•œ JS ๋ฌธ๋ฒ•๋„ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์„ ํ†ตํ•œ props ์ „๋‹ฌ๋„ ๊ฐ€๋Šฅ.
  • React๋Š” ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์—…๋ฐ์ดํŠธ๋  ๋•Œ๋งˆ๋‹ค Virtual DOM์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ๋ฅผ ๋น„๊ตํ•˜๋Š” ์ž‘์—…์„ ํ†ตํ•ด
    ๋ณ€๊ฒฝ๋œ ์ƒํƒœ๋งŒ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•จ์œผ๋กœ์จ DOM ์กฐ์ž‘์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์ธ APP์„ ๋งŒ๋“ ๋‹ค.
  • React๋Š” state(์ƒํƒœ)๋ณ€๊ฒฝ์„ ๊ฐ์ง€ํ•˜๊ณ  reconciliation(์žฌ์กฐ์ •)ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ตํ•ด ์ปดํฌ๋„ŒํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ์ฆ‰๊ฐ์ ์œผ๋กœ ๋ฐ˜์‘ํ•˜๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ.
  • React์— ์ƒํƒœ ๋ณ€ํ™”๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด state ๋ณ€์ˆ˜์™€ state ์ƒํƒœ๋ฅผ ๋ฐ”๊ฟ”์ค„ ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜๋กœ ๊ตฌ์„ฑ๋œ useState๋ผ๋Š” Hook์„ ์‚ฌ์šฉ
  • React์—์„œ๋„ .map() method๋Š” ๋ฆฌ์ŠคํŠธ ๋‚ด๋ถ€์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์•„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 
  • ์ปดํฌ๋„ŒํŠธ ์•ˆ์—์„œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ Œ๋”๋ง ํ•  ๋•Œ๋Š” ๊ผญ key ๊ฐ’์„ ๋„ฃ์–ด์ค˜์•ผ ์ƒํƒœ ๋ณ€๊ฒฝ ์‹œ ๋ณ€๊ฒฝ๋œ ์š”์†Œ๋งŒ ์ƒˆ๋กœ ๋žœ๋”๋ง ํ•  ์ˆ˜ ์žˆ๋‹ค.
    key ๊ฐ’์€ ๋™์ผํ•œ ์ปดํฌ๋„ŒํŠธ ๋ฆฌ์ŠคํŠธ์—์„œ๋งŒ ์œ ์ผํ•ด์•ผ ํ•˜๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐฐ์—ด์˜ id ๊ฐ’์„ ๋„ฃ์–ด์ค€๋‹ค.
  • Styled-Components๋Š” CSS in JS ๊ด€๋ จํ•˜์—ฌ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ๋ฆฌ์—‘ํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ.
    React์—์„œ ๋”ฐ๋กœ Css ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด import ํ•ด์ค„ ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ
    scss๋ฌธ๋ฒ•์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ props์— ๋”ฐ๋ผ ์กฐ๊ฑด๋ถ€ ์Šคํƒ€์ผ์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.
  • ๊ตฌ๊ธ€๋กœ๋ด‡ ๋“ฑ ๊ฒ€์ƒ‰์—”์ง„์ด ์‚ฌ์ดํŠธ๋ฅผ ํƒ์ƒ‰ํ•  ๋•Œ URL์„ ํ†ตํ•ด ์ƒ‰์ธ ์ž‘์—…์„ ํ•˜๋Š”๋ฐ
    React๋Š” SinglePageApplication์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์ดํŠธ ๋…ธ์ถœ์ด ์–ด๋ ค์šด ๋‹จ์ ์ด ์žˆ๋‹ค.
    SPA์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด Router์„ ์‚ฌ์šฉํ•˜๋ฉด url์„ ์ธ์‹ํ•ด์„œ ServerSideRendering์ฒ˜๋Ÿผ ๊ตฌํ˜„๋˜๊ธฐ ๋•Œ๋ฌธ์— Crawling์ด ๊ฐ€๋Šฅ.
  • /:id๋Š” ๋™์  ๋ผ์šฐํŒ…์„ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” URL ํŒจํ„ด. useParams() Hook๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ.
  • Route๊ฐ€ ์ค‘์ฒฉ๋˜์–ด ์žˆ์œผ๋ฉด ํ•˜์œ„์š”์†Œ์— ์ƒ์œ„ ์š”์†Œ์˜ url/ ๋’ค์˜ ๋ฌธ์ž์—ด์„ ์ •์˜ํ•˜๋ฉด ๋œ๋‹ค. 

 

 

 

 ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป Longed For
  • 10km ๋Ÿฌ๋‹
  • ๋ชจ๋˜ JavaScript ํŠœํ† ๋ฆฌ์–ผ, ํŒŒํŠธ 2 ๋ฌธ์„œ ๋‹จ๋ฝ ์ˆ™์ง€
  • ํšŒ๊ณ ์กฐ React ๊ณต์‹๋ฌธ์„œ ์Šคํ„ฐ๋”” ์ฐธ์—ฌ.
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 0๋‹จ๊ณ„ ๋ฌธ์ œ ๋งค์ผ 2๊ฐœ์”ฉ ํ’€๊ธฐ.
  • ๋ฆฌ์•กํŠธ ๊ณต์‹๋ฌธ์„œ ํ‹ฑํƒํ†  ํ’€์–ด๋ณด๊ธฐ.
  • ๋ฏธ๋‹ˆ๊ฒŒ์ž„ ์ทจํ•ฉํ•˜๊ณ  ๋ฆฌ๋“œ๋ฏธ ์ž‘์„ฑํ•ด์„œ github ์—…๋กœ๋“œ.
  • ์œ„๋‹ˆ๋ธŒ React ๊ฐ•์˜์ž๋ฃŒ ๋ณด๊ณ  ์‹ค์Šตํ•ด๋ณด๊ธฐ.

 

 

 

๋ฐ˜์‘ํ˜•

'๋ฉ‹์Ÿ์ด์‚ฌ์ž์ฒ˜๋Ÿผ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฉ‹์Ÿ์ด ์‚ฌ์ž์ฒ˜๋Ÿผ] ๋ฉ‹์‚ฌ ํ”„๋ก ํŠธ์—”๋“œ ์Šค์ฟจ 5๊ธฐ 13์ฃผ์ฐจ 4LS ํšŒ๊ณ  (Redux, TDD, ์ž๋ฃŒ๊ตฌ์กฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜, Big O, ์›น ์ ‘๊ทผ์„ฑ)  (0) 2023.05.27
[๋ฉ‹์Ÿ์ด ์‚ฌ์ž์ฒ˜๋Ÿผ] ๋ฉ‹์‚ฌ ํ”„๋ก ํŠธ์—”๋“œ ์Šค์ฟจ 5๊ธฐ 12์ฃผ์ฐจ 4LS ํšŒ๊ณ  (useEffect, useMemo, Context, customHook)  (0) 2023.05.22
[๋ฉ‹์Ÿ์ด ์‚ฌ์ž์ฒ˜๋Ÿผ] ๋ฉ‹์‚ฌ ํ”„๋ก ํŠธ์—”๋“œ ์Šค์ฟจ 5๊ธฐ 10์ฃผ์ฐจ 4LS ํšŒ๊ณ  (React Component, JSX, Props, Node.js, npm)  (0) 2023.05.10
[๋ฉ‹์Ÿ์ด ์‚ฌ์ž์ฒ˜๋Ÿผ] ๋ฉ‹์‚ฌ ํ”„๋ก ํŠธ์—”๋“œ ์Šค์ฟจ 5๊ธฐ 9์ฃผ์ฐจ 4LS ํšŒ๊ณ  (๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ)  (0) 2023.05.01
[๋ฉ‹์Ÿ์ด ์‚ฌ์ž์ฒ˜๋Ÿผ] ๋ฉ‹์‚ฌ ํ”„๋ก ํŠธ์—”๋“œ ์Šค์ฟจ 5๊ธฐ 8์ฃผ์ฐจ 4LS ํšŒ๊ณ (์ •๊ทœํ‘œํ˜„์‹/์ด๋ฒคํŠธ ์ „ํŒŒ/๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ)  (0) 2023.04.26