TIL_221207_ ๐Ÿ€โ—๐ŸšฉReact ๊ณผ์ œ, ๋ฆฌ๋ทฐ

์ •์œค์ˆ™ยท2022๋…„ 12์›” 7์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
38/192
post-thumbnail

๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ 4๊ธฐ ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉ React B๋ฐ˜


๐Ÿ“’ ์˜ค๋Š˜์˜ ๊ณต๋ถ€

1. React ๊ณผ์ œ ์ œ์ถœ - TO DO LIST

  • ์—ญ์‹œ ์ข€ ์‰ฌ๋ฉด์„œ ์ƒ๊ฐํ•˜๋‹ค ๋ณด๋ฉด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ๋” ์ž˜ ๋– ์˜ค๋ฅธ๋‹ค.

    • ์‚ญ์ œ ๋ฒ„ํŠผ ๋ˆ„๋ฅผ ๋•Œ ๋ฐฐ์—ด์ด ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ง€๋“ฏ์ด ์™„๋ฃŒ, ์ทจ์†Œ ๋ฒ„ํŠผ ๋ˆŒ๋ €์„ ๋•Œ๋„ ๋ฐฐ์—ด์ด ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ง€๊ฒŒ ์ฝ”๋“œ ์งœ๋ณด๊ธฐ!
      -> ์•„๋‹˜... ๋ฐฐ์—ด์„ ์ƒˆ๋กœ ๋งŒ๋“œ๋Š” ๊ฒŒ ์•„๋‹ˆ๊ณ  ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ 'isDone'์„ ๋ณ€๊ฒฝ์‹œ์ผœ์•ผ ํ•จ
      -> ๋ฒ„ํŠผ ์—ฐ๊ฒฐ์€ ํ–ˆ๋Š”๋ฐ ์˜ค๋ฅ˜
      Cannot create property 'isDone' on boolean 'false'

    • ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์ด๋™ ํ•จ
      -> working์—์„œ ์™„๋ฃŒ ๋ˆ„๋ฅด๋ฉด Done์œผ๋กœ ์ด๋™ ํ•˜๋Š” ๊ฒƒ๋งŒ ๋˜๊ณ  ์ฝ”๋“œ๋ฅผ true-false ๋ฐ”๊พธ๋ฉด ์ด์   Done์—์„œ working์œผ๋กœ ์˜ฌ๋ผ๊ฐ€๋Š” ๊ฒƒ๋งŒ ๋จ
      -> ๊ทธ๋ฆฌ๊ณ  ์™„๋ฃŒ๋ฅผ ๋ˆŒ๋Ÿฌ๋„ ์•„๋ž˜์˜ ๊ธ€์ด ์œ„๋กœ ์˜ฌ๋ผ์˜ค๊ณ  ์ทจ์†Œ๋ฅผ ๋ˆŒ๋Ÿฌ๋„ ์œ„๋กœ ์˜ฌ๋ผ๊ฐ.. ๋ญ”๊ฐ€ ๋‹ค ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์–ด์„œ id ๊ฐ’์œผ๋กœ ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ!!
      -> map, filter๋Š” ์—ฌ๊ธฐ์— ์“ฐ๋Š” ๊ฒŒ ์•„๋‹Œ ๊ฒƒ ๊ฐ™๋‹ค. ์ด๊ฑด false์ธ ์• ๋“ค, true์ธ ์• ๋“ค์„ ๋ชจ์•„์„œ ์ผ๊ด„๋กœ ๋‹ค ๋ณ€๊ฒฝ์„ ์‹œ์ผœ์„œ ๋ฐ˜ํ™˜ํ•˜๋‹ˆ๊นŒ ์•„๋ฌด ๋ฒ„ํŠผ์ด๋‚˜ ๋ˆŒ๋Ÿฌ๋„ ๋‹ค ๋ฐ”๋€œ..
      -> ํ•จ์ˆ˜ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ ๋‚ด ์ดํ•ด๋„๊ฐ€ ๋ฌธ์ œ์˜€๋‹ค.


๐Ÿ€

๋งค๋‹ˆ์ €๋‹˜ ๋„์›€

  • ๊ณผ์ œ์— ํ•จ์ˆ˜๋ฅผ ์ž˜๋ชป ์“ด ๊ฒƒ ๊ฐ™์•„ ์งˆ๋ฌธํ•˜๋Ÿฌ ๊ฐ”๋‹ค.
    • map()ํ•จ์ˆ˜์— ๋Œ€ํ•œ ๋‚ฎ์€ ์ดํ•ด๋„๋กœ ์ฝ”๋“œ๋ฅผ ์ž˜๋ชป ์งœ์„œ map()ํ•จ์ˆ˜ ๊ณต๋ถ€๋ฅผ ์‹œ์ผœ์ฃผ์…จ๋‹ค.

โ—

  • ์ง„์งœ JS ๊ธฐ์ดˆ๋ฅผ ํƒ„ํƒ„ํžˆ ํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฑธ ๊นจ๋‹ฌ์•˜๋‹ค.
    • ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ๋ช‡ ๋ฒˆ ์ผ๋‹ค๊ณ  ์ˆœ๊ฐ„ ๋‹นํ™ฉํ•ด์„œ ํ•จ์ˆ˜ ํ‘œํ˜„์‹์„ ๊นŒ ๋จน์—ˆ๋„ค;
    • ํ•จ์ˆ˜ ํ‘œํ˜„์‹, ์„ ์–ธ์‹์œผ๋กœ ๊ณ„์† ๋ฐ”๊ฟ”๋ณด๋ฉฐ ์ฝ”๋“œ ์ดํ•ดํ•˜๊ธฐ
    • cosole.log๋กœ ํ•˜๋‚˜ํ•˜๋‚˜ ์ฐ์–ด๋ณด๋Š” ๊ฒƒ ์Šต๊ด€ ๋“ค์ด๊ธฐ!!
    • ์ด๋ก ์œผ๋กœ ๋ฐฐ์šด ๊ฒƒ๋“ค์„ ํ•˜๋‚˜ํ•˜๋‚˜ ์ฝ”๋“œ๋กœ ์ณ๋ณด๋ฉด์„œ ์ดํ•ดํ•˜๊ธฐ
  • ์งˆ๋ฌธํ•  ๋•Œ ์ข€ ๋” ์ •๋ฆฌํ•ด์„œ ๊ฐ€๊ธฐ
    • ์–ด๋–ค ๊ฑธ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์€์ง€
    • ์™œ ์ด ์ฝ”๋“œ๋ฅผ ์ผ๋Š”์ง€
    • ์ด ์ฝ”๋“œ๊ฐ€ ์–ด๋””์„œ ์–ด๋–ป๊ฒŒ ์ž‘๋™์„ ํ•˜๊ณ  ์žˆ๋Š”์ง€

  • map์„ ์“ฐ์ง€ ์•Š์•„๋„ ๋  ๊ฒƒ ๊ฐ™๊ณ  id๊ฐ’์„ ๊ฐ€์ ธ์™€์„œ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์€๋ฐ.. ๋„ˆ๋ฌด ์•ˆ ๋˜๋„ค.
    • ํŒ€์›์€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ•˜๋‚˜ ๋” ๋งŒ๋“ค์–ด ๋ฆฌ์ŠคํŠธ๋ฅผ ๋‚˜๋ˆด๋Š”๋ฐ ๊ทธ๋ ‡๊ฒŒ ํ•ด์•ผ ํ•˜๋Š” ๊ฑด๊ฐ€..
    • ์ด์   ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์ด๋™ํ•˜๋Š” ๊ฒƒ๋„ ์•ˆ ๋œ๋‹ค.
    • id๊ฐ’์„ ๊ฐ€์ ธ์™€์„œ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹œ๋„ํ•ด๋ดค๋Š”๋ฐ ์•ˆ ๋ผ์„œ ๊ฒฐ๊ตญ ์ œ์ถœ!
      https://vercel.com/ys739/react-todo-list
  • ์ œ์ถœํ•˜๊ณ  ๋‚˜์„œ ํด๋” ๊ตฌ์กฐ ์ปดํฌ๋„ŒํŠธ ๊ตฌ์„ฑ ๋‚˜๋ˆ ์•ผ ํ•˜๋Š” ๊ฑธ ์•Œ์•„์„œ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š” ๋งŒํผ ๋‚˜๋ˆ”.
    -> css๋„ ๋‹ค์‹œ ๋‚˜๋ˆ„๊ณ  export default import ๊ฐ jsxํŒŒ์ผ์—์„œ import ํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„๋„ ์žˆ์–ด ํ™•์ธํ•˜๋ฉฐ ์ง„ํ–‰ํ–ˆ๋‹ค.
    -> ๋ถ„๋ฆฌํ•œ jsx ํŒŒ์ผ์„ app.js์—์„œ ์“ฐ๋Š” ๋ฐฉ๋ฒ•๋„ ์ตํž ์ˆ˜ ์žˆ์—ˆ๋‹ค.
    -> App ์•ˆ์— ์žˆ๋Š” ๋ถ€๋ถ„๋„ ๋‚˜๋ˆ„๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ const๋กœ ์„ ์–ธ๋œ ๋ถ€๋ถ„์„ ์—ฌ๊ธฐ์ €๊ธฐ์„œ ์จ์„œ ๋‚˜๋ˆŒ ์ˆ˜ ์—†์—ˆ๋‹ค.
  • input๊ฐ’ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฑฐ ์•„์˜ˆ ์žŠ๊ณ  ์žˆ์—ˆ๋‹ค.
    • ๊ตฌํ˜„ํ•ด์•ผ ํ•  ๋ถ€๋ถ„ ๋”ฐ๋กœ ์ •๋ฆฌํ•ด์„œ ๊ณผ์ œ๋ฅผ ์œ„ํ•œ ToDo List๋ฅผ ๋งŒ๋“ค์—ˆ์–ด์•ผ ํ–ˆ๋‹ค.
    • ์™„์„ฑ์—๋งŒ ์‹ ๊ฒฝ์“ฐ๋Š๋ผ ์ œ์ผ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์„ ๋†“์ณค๋‹ค.

2. React ๊ณผ์ œ ๋ฆฌ๋ทฐ

  • App.js

    • ๋‹ค ์ง€์šฐ๊ณ  ์ฒ˜์Œ๋ถ€ํ„ฐ ์“ฐ๋Š” ์—ฐ์Šต ๋งŽ์ด ํ•ด๋ณด๊ธฐ
  • ํ™”๋ฉด์„ ๋ Œ๋”๋งํ•˜๋Š” ๊ธฐ์ค€

    • props ๋ณ€๊ฒฝ
    • state ๋ณ€๊ฒฝ
      -> useStateํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฌถ์ธ state๊ฐ€ setState์— ์˜ ํ•ด ๋ณ€๊ฒฝ ๋์„ ๋•Œ ๊ฐ์ง€
      -> state๊ฐ€ useState๋กœ ๋ฌถ์—ฌ ์žˆ์–ด์•ผ react๊ฐ€ ์ธ์ง€ํ•œ๋‹ค
  • ๊ณผ์ œ ๋ฆฌ๋ทฐ

    1. input ๋‚ด์šฉ์ด ๋น„์—ˆ์„ ๋•Œ ์ถ”๊ฐ€ํ•˜๊ธฐ ๋ˆ„๋ฅด๋ฉด alert
    • alert ๋œจ๊ณ  ๋‚˜์„œ ํฌ์ปค์Šค๊ฐ€ input์— ๊ฐ€๋„๋ก!
    1. ! ํ™œ์šฉํ•˜๊ธฐ

    2. component ๋ถ„๋ฆฌํ•  ๋•Œ props๋กœ ๋„˜๊ฒจ์ค˜์•ผ ํ•  ๊ฒƒ ์ž˜ ์ •๋ฆฌํ•˜๊ธฐ

    3. ๋น„์Šทํ•œ ์ปดํฌ๋„ŒํŠธ๋Š” ๊ฐ™์ด ๋ฌถ์–ด์ฃผ๊ธฐ

    • ๋‚˜๋ˆ ์ ธ ์žˆ์œผ๋ฉด ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ๋ฐฐ๋กœ ๋“ ๋‹ค.
    1. ๋ฐฐํฌํ•  ๋•Œ๋Š” console.log ๋‹ค ์ฃผ์„์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ ์ง€์šฐ๊ธฐ

    2. components๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉด .jsxํŒŒ์ผ๋กœ ๋ฐ”๊ฟ”์ฃผ๊ธฐ

    3. ์—ด๊ณ  ๋‹ซ๋Š” ํƒœ๊ทธ ์•ˆ์— ์žˆ๋Š” ๋‚ด์šฉ์€ children์œผ๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

    4. children์ด ์—†์„ ๋•Œ๋Š” <component/> ๋‹ซ๋Š” ํƒœ๊ทธ ํ•˜๋‚˜๋งŒ ์จ๋„ ๋œ๋‹ค.

    โญ ์ฃผ์„ ๋‹ฌ๊ธฐ


3. Programmers

์บ๋ฆญํ„ฐ์˜ ์ขŒํ‘œ

  • ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธธ์ด = (board[0].length-1)/2

    • board.length๋กœ ๊ตฌํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๊ณ  board ์ž์ฒด๋กœ ํ•ด์•ผ ํ•จ! (board[1]-1)/2
  • ๊ฐ ๋ฐฉํ–ฅ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ณ  ์ขŒ์šฐ, ์ƒํ•˜๋ผ๋ฆฌ -๋ฅผ ํ•œ ๊ฐ’๋„ ๊ตฌํ•˜๊ธฐ

    • ์ผ๋‹จ "left" ๊ฐœ์ˆ˜ ๊ตฌํ•˜๋Š” ๊ฒƒ๋ถ€ํ„ฐ ํ•ด ๋ด„
  • ์ •ํ™•๋„๊ฐ€ 70% ์ •๋„ ๋‚˜์˜จ๋‹ค. ๋ญ˜ ๋†“์นœ๊ฑธ๊นŒ?

    • ์‹คํŒจํ•œ ํ…Œ์ŠคํŠธ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜๊ฐ€ ์—†์–ด์„œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ์ถ”๊ฐ€ํ•ด๋ณด๋ฉฐ ์–ด๋–ค ์กฐ๊ฑด์—์„œ ์ฝ”๋“œ๊ฐ€ ์ ์šฉ์ด ์•ˆ ๋˜๋Š”์ง€ ํŒŒ์•…ํ–ˆ๋‹ค.
    • board๊ฐ€ [1,1]๋กœ ์ฃผ์–ด์กŒ์„ ๋•Œ board ๊ธธ์ด๋ฅผ ์ ์šฉํ•˜๋ฉด ์‹ค์ œ board์™€ ๋‹ฌ๋ฆฌ 0์ด ๋‚˜์˜จ๋‹ค.
  • ๋‹ค์Œ๋‚  ์ด์–ด์„œ ํ’€๊ธฐ

    • boarad๊ฐ€ 1์ผ ๋•Œ์™€ ์•„๋‹๋•Œ๋กœ ๋‚˜๋ˆ„๊ณ  ๊ทธ ์•ˆ์—์„œ ๋˜ if๋ฌธ์œผ๋กœ b0, b1์ด board๋ณด๋‹ค ํด ๋•Œ ๋‚˜๋ˆ ๋ณด๊ธฐ
    • ์ž˜ ์•ˆ ๋จ!!

4. React Udemy ๊ฐ•์˜

JavaScript

  • ๊ฐ์ฒด์™€ ๋ฐฐ์—ด์€ ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž…!

๐Ÿšฉ

  • ๋‚ด๊ฐ€ ๋ฐฐ์›Œ์•ผ ํ•  ๊ฒƒ์„ ๋†“์น˜๊ณ  ์žˆ์ง„ ์•Š์€์ง€ ํ™•์ธํ•˜๊ธฐ.
    • ์™„์„ฑ์— ๊ธ‰๊ธ‰ํ•ด์„œ ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ์ดํ•ดํ•˜๊ณ  ๋„˜์–ด๊ฐ€๋Š” ๊ฒŒ ๋งŽ์ด ๋ถ€์กฑํ–ˆ๋‹ค.
    • '์ด ์ฝ”๋“œ๋Š” ์™œ ์ด ์ˆœ์„œ๋กœ ์“ฐ๋Š”์ง€', '์ด ํ•จ์ˆ˜๋Š” ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฑด์ง€' ๊นŠ์ด ์ƒ๊ฐํ•˜์ง€ ์•Š์•˜๋˜ ๊ฒƒ๋“ค์ด ์ด๋ฒˆ ๊ณผ์ œ๋ฅผ ํ•  ๋•Œ ๋ชจ๋‘ ๊ฑธ๋ฆผ๋Œ์ด ๋˜์—ˆ๋‹ค.
    • 5๊ฐœ ์ค‘ 1๊ฐœ๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค๊ณ  ํ•ด๋„ ๊ทธ 1๊ฐœ๋ฅผ ๋‚ด๊ฐ€ ์˜จ์ „ํžˆ ์ดํ•ดํ•˜๊ณ  ๊ตฌํ˜„ํ•œ ๊ฒƒ์€ 5๊ฐœ๋ฅผ ์ดํ•ดํ•˜์ง€ ์•Š๊ณ  ๊ตฌํ˜„ํ•œ ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๊ฐ’์ง€๋‹ค.
  • ๋‹ค์Œ ๊ณผ์ œ๋Š” ๋‚ด๊ฐ€ ๋ถ€์กฑํ•œ ๋ถ€๋ถ„์„ ๊ผญ ๋ณด์™„ํ•˜๊ณ  ์‹œ์ž‘ํ•˜์ž
profile
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž

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