23.05.03 TIL๐Ÿ˜Š

์ƒค์ด๋‹ˆยท2023๋…„ 5์›” 2์ผ
0

learned.log

๋ชฉ๋ก ๋ณด๊ธฐ
42/46

์˜ค๋Š˜์€ ๋ฌด์—‡์„ ํ–ˆ๋‚˜์š”?

Weekly Mission Todolist ํŽ˜์–ดํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐํš

์ด๋ฒˆ์ฃผ๋Š” ํŽ˜์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ To Do List๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๋ฏธ์…˜์ด๋‹ค! ๋‚ด ํŽ˜์–ด๋Š” ํ† ๋‹ˆ >< ์˜ค๋Š˜ ํ•จ๊ป˜ ์–ด๋–ค ๊ธฐ๋Šฅ์„ ๋„ฃ์„์ง€, ์–ด๋–ค ๋””์ž์ธ์œผ๋กœ ํ• ์ง€์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•˜๋ฉฐ ๋ฆฌ์ŠคํŠธ์—…ํ•˜๊ณ  ๋””์ž์ธ ๊ธฐํš๊นŒ์ง€ ์™„๋ฃŒํ–ˆ๋‹ค!

  • ๊ธฐ๋Šฅ
  1. ์บ˜๋ฆฐ๋” ๊ธฐ๋Šฅ โ†’ ์บ˜๋ฆฐ๋” ํ•˜๋‚˜ ํด๋ฆญ โ†’ todo list
  2. ํ• ์ผ ์ถ”๊ฐ€ (์นดํ…Œ๊ณ ๋ฆฌX)
    • Create/Udate/delete
    • ์ฒดํฌ ๊ธฐ๋Šฅ ํ† ๊ธ€
      • ๋‚ด์ผ ๋ฏธ๋ฃจ๊ธฐ, ์„ธ๋ชจ ๋“ฑ์€ ์ถ”ํ›„ ๊ตฌํ˜„
  3. drag & drop ํ•˜๊ธฐ (์šฐ์„ ์ˆœ์œ„)
  4. ์นด์นด์˜คํ†ก ๊ณต์œ ํ•˜๊ธฐ?!

์šฐ์„  ๊ธฐ๋Šฅ์„ ๋Ÿฌํ”„ํ•˜๊ฒŒ ์žก์•˜๊ณ , ์„ธ์„ธํ•œ ๊ตฌํ˜„ ์‚ฌํ•ญ์„ ๋ฆฌ์ŠคํŠธ์—…ํ–ˆ๋‹ค!

  • ์ผ๊ด€๋œ UI๋ฅผ ์œ„ํ•ด ์ฃผ์š” ์ƒ‰์ƒ 4๊ฐ€์ง€๋ฅผ ์ •ํ–ˆ๋‹ค.

์˜ค๋Š˜์˜ ๋‚˜๋Š” ๋ฌด์—‡์„ ์ƒˆ๋กญ๊ฒŒ ๋ฐฐ์› ๋‚˜์š”?

[1] ํ•จ์ˆ˜ ์„ ์–ธ์‹๊ณผ ํ•จ์ˆ˜ ํ‘œํ˜„์‹

ํ•จ์ˆ˜ ์„ ์–ธ์‹

ํ•จ์ˆ˜ ์„ ์–ธ์‹์€ function ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

function add(x, y) {
  return x + y;
}

ํ•จ์ˆ˜ ํ‘œํ˜„์‹

ํ•จ์ˆ˜ ํ‘œํ˜„์‹์€ ํ•จ์ˆ˜๋ฅผ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜์—ฌ ์ •์˜ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ํ•จ์ˆ˜ ํ‘œํ˜„์‹์€ ๋ณ€์ˆ˜ ์ด๋ฆ„์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉฐ, ๋ณ€์ˆ˜์˜ ๋ฒ”์œ„ ๊ทœ์น™์— ๋”ฐ๋ผ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜ ํ‘œํ˜„์‹์€ ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ์ƒ๋žตํ•˜๊ณ  ์ต๋ช… ํ•จ์ˆ˜๋กœ ์ •์˜ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

const add = function(x, y) {
  return x + y;
};

const add = function eva(x, y) {
  return x + y;
}; // ์ด๊ฒƒ๋„ ํ‘œํ˜„์‹์ž„

์ฐจ์ด์ 

  1. ํ˜ธ์ด์ŠคํŒ… ์—ฌ๋ถ€
    • ํ•จ์ˆ˜ ์„ ์–ธ์‹์€ ์Šคํฌ๋ฆฝํŠธ์˜ ์–ด๋””์—์„œ๋‚˜ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํ•จ์ˆ˜ ํ‘œํ˜„์‹์€ ๋ณ€์ˆ˜ ๋ฒ”์œ„ ๊ทœ์น™์— ๋”ฐ๋ผ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
    • ์ฆ‰ ์„ ์–ธ์‹์€ ํ˜ธ์ด์ŠคํŒ…์ด ๋ฐœ์ƒํ•˜๊ณ , ํ‘œํ˜„์‹์€ ๋ณ€์ˆ˜์˜ ๋ฒ”์œ„ ๊ทœ์น™์— ๋”ฐ๋ผ ํ˜ธ์ด์ŠคํŒ… ์œ ๋ฌด๊ฐ€ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค
      • ํ•จ์ˆ˜ ์„ ์–ธ์‹
        • ํ•จ์ˆ˜ ์‹คํ–‰
          console.log(sayhi()) //ํ•˜์ด
          function sayhi(){ 
          	console.log("ํ•˜์ด")}
        • ํ•จ์ˆ˜ ๊ฐ์ฒด ๊ทธ ์ž์ฒด
          console.log(sayhi) // ํ˜ธ์ด์ŠคํŒ…, function ์ถœ๋ ฅ
          function sayhi(){ 
          	console.log("ํ•˜์ด")}
      • ํ•จ์ˆ˜ ํ‘œํ˜„์‹
        • var์—์„œ๋Š” ๋ณ€์ˆ˜๋Š” ํ˜ธ์ด์ŠคํŒ… ๋˜์ง€๋งŒ, ์•ˆ์— ๊ฐ’์€ undefined
          • ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ, ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ˆ๊นŒ.. ๋ณ€์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ๊ฒƒ์ด์ง€

            console.log(sayhi)
            var sayhi = () => { console.log("ํ•˜์ด")}
            //undefined
            console.log(sayhi()) //reference error
            var sayhi = () => { console.log("ํ•˜์ด")}
  2. ์Šค์ฝ”ํ”„์˜ ์ฐจ์ด
    • ํ•จ์ˆ˜ ์„ ์–ธ์‹ : ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ์œ„์น˜์—์„œ ํ˜ธ์ด์ŠคํŒ…(hoisting)์ด ๋ฐœ์ƒํ•˜๋ฉฐ, ํ•ด๋‹น ํ•จ์ˆ˜๋Š” ์Šค์ฝ”ํ”„ ๋‚ด์˜ ์–ด๋–ค ์œ„์น˜์—์„œ๋“  ํ˜ธ์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•ด๋‹น ํ•จ์ˆ˜๊ฐ€ ์ •์˜๋œ ์œ„์น˜์˜ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
    • ํ•จ์ˆ˜ ํ‘œํ˜„์‹ : ํ•ด๋‹น ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋œ ์œ„์น˜์˜ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

[2] ๋ฆฌ์•กํŠธ์˜ Strict ๋ชจ๋“œ

๊ณต๋ถ€ํ•˜๋ฉด์„œ ์–ด๋–ค ์–ด๋ ค์›€์ด ์žˆ์—ˆ๋‚˜์š”?

ํด๋กœ์ €์™€ ์Šค์ฝ”ํ”„๊ฐ€ ํ—ท๊ฐˆ๋ฆฐ๋‹ค..

ํ•จ์ˆ˜ ์„ ์–ธ์‹๊ณผ ํ‘œํ˜„์‹์˜ ์ฐจ์ด๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ํด๋กœ์ €์™€ ์Šค์ฝ”ํ”„์— ๋Œ€ํ•œ ๊ฐœ๋…์ด ๋งŽ์ด ํ”๋“ค๋ฆผ์„ ๊นจ๋‹ฌ์•˜๋‹ค. ๋ณต์Šต์ด ํ•„์ˆ˜์ผ ๊ฒƒ ๊ฐ™๋‹ค! ์‚ฌ์‹ค, ๋‚ด๋ถ€ ์Šฌ๋กฏ (์‹คํ–‰ ์ปจํ…์ŠคํŠธ)์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ๋‚จ์—๊ฒŒ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์„ ๋•Œ๊นŒ์ง€ ์™„๋ฒฝํ•˜๊ฒŒ ์—ฐ์Šต์ด ํ•„์š”ํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ๋ฉด์ ‘ ์Šคํ„ฐ๋””์—์„œ ๋“ค์–ด๋‹ฌ๋ผ๊ณ  ์ œ์•ˆํ•ด์•ผํ•  ๋“ฏ?!ใ…‹ใ…‹ใ…‹

ํŽ˜์–ดํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฒ”์œ„์— ๋Œ€ํ•œ ๊ณ ๋ฏผ..

์ด๋ฒˆ์ฃผ Weekly Mission์€ ํŽ˜์–ดํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ Todo List๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค. ์–ผ๋งˆ๋‚˜ ๋””ํ…Œ์ผํ•˜๊ฒŒ, UI ์š”์†Œ๋ฅผ ์‹ ๊ฒฝ ์“ฐ๋ฉฐ ๊ตฌํ˜„์„ ํ•ด์•ผํ•  ์ง€, ๊ทธ ๋ฒ”์œ„๋ฅผ ์ •ํ•˜๋Š” ๊ฒƒ์— ๋งŽ์€ ๊ณ ๋ฏผ์ด ์žˆ์—ˆ๋‹ค. 3~4์ผ ๋‚จ์€ ๊ธฐ๊ฐ„๋™์•ˆ ํŽ˜์–ดํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋„๋ฅผ ์•Œ๊ณ  ๊ณ„ํšํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•œ๋ฐ.. ์•„์ง์€ ์–ด๋ ค์šด ๊ฒƒ ๊ฐ™๋‹ค. ์šฐ์„  ๋ฆฌ์ŠคํŠธ์—… ํ•ด๋†“์€ ๊ธฐ๋Šฅ๋“ค์€ ์ตœ๋Œ€ํ•œ ๊ตฌํ˜„ ํ•ด๋ณด๋Š” ๊ฒƒ์œผ๋กœ!

์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์Šคํ‚ฌ์— ๋Œ€ํ•œ ๊ณ ๋ฏผ๐Ÿค”

๊ฐœ๋ฐœ์ž์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์†Œ์–‘ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์Šคํ‚ฌ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ (๋™๊ธฐ๋“ค์ด๋ž‘) ํฌ๊ณ  ์ž‘์€ ํ˜‘์—…์„ ํ•ด์˜ค๊ธด ํ–ˆ์ง€๋งŒ ํฌ๊ฒŒ ๋ฌธ์ œ๋œ ์ ์€ ์—†์—ˆ๊ณ , ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ž˜ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋˜ ๋ถ€๋ถ„์ด์—ˆ๋‹ค!
ํ•˜์ง€๋งŒ ์š”์ฆ˜, ๋ถ€์ฉ ๊ทธ๋Ÿฐ ๊ณ ๋ฏผ์„ ๋งŽ์ด ํ•˜๊ณ ์žˆ๋‹ค.

  1. ๋ฉ˜ํ† ๋ง ์‹œ๊ฐ„์ด๋‚˜ ํ”ผ์–ด์—๊ฒŒ ๋ชจ๋ฅด๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์งˆ๋ฌธํ•  ๋•Œ, ์งˆ๋ฌธ์˜ ์˜๋„๋ฅผ ํ•œ๋ฒˆ์— ์ „๋‹ฌํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋นˆ๋ฒˆํ•˜๋‹ค.

    ์˜ˆ๋ฅผ ๋“ค์–ด state์— update function์„ ์“ฐ๋ฉด ์™œ ์ด์ „ state ๊ฐ’์„ ๊ฐ€์ง€๊ณ ์˜ค๋Š” ์ง€์— ๋Œ€ํ•œ ๋™์ž‘ ๊ณผ์ •์„ ๋ชจ๋ฅด๊ฒ ๋‹ค. ๋ผ๋Š” ์งˆ๋ฌธ์„ ํ–ˆ์„ ๊ฒฝ์šฐ, ๋„ˆ๋ฌด ์žฅํ™ฉํ•˜๊ฒŒ ์ด์•ผ๊ธฐ๋ฅผ ํ•ด์„œ ๋ฉ˜ํ† ๋‹˜์ด ์บ์น˜ํ•˜์ง€ ๋ชปํ•˜์…จ๋‹ค. ์–ด๋–ป๊ฒŒ ์ •๋ฆฌ๋ฅผ ํ•ด์„œ ์ž˜ ๋ฌผ์–ด๋ณผ์ง€ ๊ฐ€ ๊ด€๊ฑด์ด๋‹ค.

  2. ๋‚ด ์˜๊ฒฌ์„ ์–ดํ•„ํ•  ๋•Œ์™€ ์˜๊ฒฌ์„ ๋ฌผ์–ด๋ณผ ๋•Œ ๋ณ„ ์ ์ ˆํ•œ ์†Œํ”„ํŠธ์Šคํ‚ฌ์„ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.
    ์–ด๋–ค ์˜๊ฒฌ์„ PRํ•  ๋•Œ ์„ค๋“ํ•˜๋Š” ๋งํ•˜๊ธฐ๋ฅผ ํ•˜๋Š” ๊ฒƒ๊ณผ ์ƒ๋Œ€์˜ ์˜๊ฒฌ์„ ๋ฌผ์–ด๋ณด๋Š” ๊ฒƒ์€ ๋‹ค๋ฅธ ๋ฒ”์ฃผ์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

    ์˜๊ฒฌ ์ œ์‹œ์˜ ๋งํ•˜๊ธฐ๋Š” ํƒ€๋‹นํ•œ ๊ทผ๊ฑฐ์— ๊ธฐ๋ฐ˜ํ•ด์„œ ์„ค๋“๋ ฅ์ด ์žˆ๋„๋ก ์ด์•ผ๊ธฐํ•ด์•ผํ•˜๋Š” ๊ฒƒ์€ ์ž˜ ์•Œ๊ณ  ์žˆ๊ณ , ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ƒ๋Œ€์˜ ์˜๊ฒฌ์„ ๋ฌผ์–ด๋ณผ ๊ฒฝ์šฐ, ์ง€๊ธˆ๊นŒ์ง€๋Š” "๋‚ด ์˜๊ฒฌ์€ ~~ํ•˜๋‹ค. ๋„ˆ๋Š” ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•ด?" ์ด๋Ÿฐ ํ๋ฆ„์œผ๋กœ ๋„˜์–ด๊ฐ”๋Š”๋ฐ, ๊ทธ๋Ÿด ๊ฒฝ์šฐ ์ƒ๋Œ€์˜ ์˜๊ฒฌ์„ ๋“ฃ๊ธฐ๋„ ์ „์— ๋‚ด ์˜๊ฒฌ์„ ๋จผ์ € ๋งํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๊ฐ์˜ ๋ฒ”์œ„๋ฅผ ์ขํ˜€๋ฒ„๋ฆฌ๋Š” ๋“ฏํ•œ ์ƒํ™ฉ์ด ์ข…์ข… ์˜จ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ์‚ฌ์ด์˜ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ์ง€ ์ฐธ ๊ณ ๋ฏผ์ธ ์š”์ฆ˜์ด๋‹ค..

    ๋ฉ˜ํ† ๋ง ๋•Œ ์ด๋Ÿฐ ๊ฒƒ๋„ ์งˆ๋ฌธํ•ด๋„ ๋˜๋ ค๋‚˜..๐Ÿค”

๋‚ด์ผ์˜ ๋‚˜๋Š” ๋ฌด์—‡์„ ๊ณต๋ถ€ํ•ด์•ผ ํ• ๊นŒ์š”?

  • react-calendar ๊ณต๋ถ€
  • ํŽ˜์–ดํ”„๋กœ๊ทธ๋ž˜๋ฐ
  • drag & drop ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ณต๋ถ€
  • swiper ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ณต๋ถ€
  • ๋ฆฌ์•กํŠธ ์›น์‚ฌ์ดํŠธ ๋งŒ๋“ค๊ธฐ ๋ณต์Šต
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ 1๋ฌธ์ œ
  • ๋ฉ˜ํ† ๋ง

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