6/20 
์˜ค๋Š˜์€ styled components, react swiper ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ๋ฒ•, ๊ฒŒ์‹œํŒ ๋งŒ๋“œ๋Š” ๋ฒ•์„ ๋ฐฐ์› ๋‹ค.
styled components ๋Š” ์š”์ฆ˜ ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ ํšŒ์‚ฌ์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค๋Š”๋ฐ ๋ฐฐ์›Œ๋ณด๋‹ˆ ์ฒ˜์Œ์—” ์ข€ ๋ณต์žกํ–ˆ์ง€๋งŒ ์“ฐ๋‹ค๋ณด๋‹ˆ ํŽธํ•˜๊ณ  ์žฌ๋ฐŒ์—ˆ๋‹ค. html, css, js ๊ฐ€ ๋ชจ๋‘ ์ ‘๋ชฉ๋˜์–ด ์“ฐ๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•˜๋‹ค.
react ์—์„œ swiper ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด๋ดค๋‹ค. ๊ฐ•์‚ฌ๋‹˜์ด react ๋Š” js ๋งŒํผ ์•„์ง ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜์ง€ ์•Š์•„์„œ ์ข€ ๋ถˆํŽธํ•˜๋‹ค๊ณ  ํ•˜์…จ๋Š”๋ฐ ํ™•์‹คํžˆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋ฌด๊ฑฐ์šด๊ฑด์ง€ react ๊ฐ€ ๋ฐ˜์‘์ด ๋А๋ ค์ ธ์„œ ์ด๊ฒŒ ์—๋Ÿฌ์ธ๊ฑด์ง€ ๋˜๋Š”๋ฐ ๋ฐ˜์˜์ด ์•ˆ ๋˜๋Š”๊ฑด์ง€ ์ข€ ๋‹ต๋‹ตํ–ˆ๋‹ค.
๊ฒŒ์‹œํŒ ๋งŒ๋“œ๋Š” ๋ฒ•์€ ๋งŽ์ด ์“ฐ๋Š” ๊ณต์‹์ด ์žˆ๋‹ค๊ณ  ํ•˜์…”์„œ ๊ทธ๊ฑธ ๋ฐฐ์›Œ๋ดค๋Š”๋ฐ ๋กœ์ง์ด ๋ณต์žกํ•ด์„œ ์–ด๋ ต๊ธด ํ–ˆ์ง€๋งŒ ์ดํ•ด๊ฐ€ ์–ด๋ ต์ง„ ์•Š์•˜๋‹ค. ๋‹ค๋งŒ useEffect ๋กœ api ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ž‘์—…์„ ๊ฐ•์‚ฌ๋‹˜๊ณผ ์ž์ฃผ ํ–ˆ๋Š”๋ฐ๋„ ์ดํ•ด๊ฐ€ ์•ˆ๋ผ์„œ ์œคํ•˜๋‹˜ํ•œํ…Œ ๋ฌผ์–ด๋ดค๋‹ค. ๊ทธ๋žฌ๋”๋‹ˆ ๋‚ด๊ฐ€ ๋ชจ๋ฅด๋Š” ๋ถ€๋ถ„๊นŒ์ง€ ํ•˜๋‚˜์”ฉ ๋‹ค ์„ค๋ช…ํ•ด์ฃผ์…”์„œ ์ดํ•ด๊ฐ€ ์ •๋ง ์ž˜๋๋‹ค. ํŠนํžˆ rse => res.json ์„ ํ•ด์ฃผ๊ณ  ๋˜ data => setList(data) ๋ฅผ ํ•ด์ฃผ๋Š” ๋ถ€๋ถ„์ด ๊ฑธ๋ ธ์—ˆ๋Š”๋ฐ json ํŒŒ์ผ๋กœ ๋ณ€ํ™˜ํ•ด์คฌ์œผ๋ฉด ๊ทธ๊ฑธ data ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋„ฃ๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด์ค˜์•ผ ํ•˜๋Š” state ํ•จ์ˆ˜๋กœ ๋ณด๋‚ด์„œ api ๋ฅผ ์ „๋‹ฌํ•ด์ฃผ๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ค‘๊ฐ„์ค‘๊ฐ„ reverse, slice ๋“ฑ ์˜ˆ์ „์— ๋ฐฐ์› ๋˜ ๋ฉ”์„œ๋“œ๋“ค์ด ๋‚˜์™€์„œ ์ข€ ๋ฐ˜๊ฐ€์› ๋‹ค.

์ง‘์— ์™€์„œ๋Š” 19์ผ์— ์ฝ”๋”ฉ์•™๋งˆ react ๊ฐ•์˜๋ฅผ 11. json-server, rest api ๊นŒ์ง€ ๋ด์„œ ์˜ค๋Š˜ ๋‚˜๋จธ์ง€๋ฅผ ๋‹ค ๋๋‚ด๋ ค๊ณ  ํ–ˆ์ง€๋งŒ 12, 13, 14 ๊นŒ์ง€ ๋ฐ–์— ๋ณด์ง€ ๋ชปํ–ˆ๋‹ค. ๋‚˜๋จธ์ง€ 15, 16, 17 ์€ ๋‚ด์ผ ๊ผญ ๋งˆ๋ฌด๋ฆฌ๋ฅผ ํ•˜๊ณ  17์ผ๋‚  ๋ฐ›์€ ์ƒ์„ธํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ ๊ณผ์ œ๋ฅผ ํ•ด๋ด์•ผ๊ฒ ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ react hook ๋“ค์ด ๋งŽ๊ณ  ์“ฐ๊ธฐ๊ฐ€ ๋ณต์žกํ•ด์„œ ๊ฐ•์˜๋ฅผ ๋‘์„ธ๋ฒˆ ๋ณด๊ณ  ํ•„๊ธฐ๋ฅผ ํ•˜๋ฉฐ ๋œฏ์–ด๋ด์•ผ ๊ทธ์ œ์•ผ ์ดํ•ด๊ฐ€ ๋๋‹ค. ์‚ฌ์‹ค ์ดํ•ด๊ฐ€ ์•„๋‹Œ ๊ณ„์† ์จ๋ด์•ผ ํ•˜๋Š”๋ฐ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์œผ๋ฉด ์‹œ์ž‘์„ ๋ชปํ•ด์„œ ๊ฑฑ์ •์ด๋‹ค. 
์ฝ”๋”ฉ์•™๋งˆ์—์„œ๋Š” day 1, day 2, day 3 ๊ฐ ๋‚ ์งœ๋ฅผ ํด๋ฆญํ•˜๋ฉด ๊ทธ์— ํ•ด๋‹นํ•˜๋Š” ๋‹จ์–ด๊ฐ€ ๋‚˜์˜ค๋Š” ์‹์ด์—ˆ๋Š”๋ฐ ๊ทธ๊ฑธ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ๊ฐ€๋Š” ๊ฒŒ ์•„๋‹Œ tab ์œผ๋กœ ๋งŒ๋“ค์–ด์คฌ์œผ๋ฉด ๋กœ์ง์ด ๋” ๋ณต์žกํ•ด์กŒ์„๊นŒ ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๋ฌผ๋ก  ์ฝ”๋”ฉ์•™๋งˆ์—์„œ๋Š” react ์˜ ๊ธฐ์ดˆ ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ๋ ‡๊ฒŒ ๋งŒ๋“ค์—ˆ๊ฒ ์ง€๋งŒ tab ์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ๋ฒˆ๋งŒ ๋ถˆ๋Ÿฌ์˜ค๋ฉด ๋  ๊ฒƒ ๊ฐ™์•„ ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ•ด๋ดค๋‹ค. ๋‚˜์ค‘์— ์‹œ๊ฐ„์ด ๋œ๋‹ค๋ฉด ํ•œ๋ฒˆ ์‹œ๋„ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค.
 

6/21
์˜ค๋Š˜์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋งค๋„ˆ์— ๋Œ€ํ•ด์„œ ๋ฐฐ์šฐ๋Š” ๋‚ ์ด๋ผ ์ˆ˜์—… ๋•Œ๋Š” ๋ณต์Šต์„ ํ•˜๊ฑฐ๋‚˜ ๊ณผ์ œ๋Š” ๋งŒ๋“ค์ง€๋„ ๋ชปํ–ˆ๋‹ค. ๊ทธ๋Œ€์‹  ์ง‘์— ์™€์„œ ์ฝ”๋”ฉ ์•™๋งˆ react ๊ฐ•์˜ ๋งˆ์ง€๋ง‰์— ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์˜์ƒ ๋นผ๊ณ  ๋‚˜๋จธ์ง€๋ฅผ ๋ชจ๋‘ ๋ดค๋‹ค! ์ดํ•ดํ•˜๊ณ , ํ•„๊ธฐ๋ฅผ ํ•˜๋ฉด์„œ ๋ณด๋А๋ผ ๋งŽ์ด ๋А๋ฆฌ๊ณ  ๋Šฆ์–ด์ง€๊ธด ํ–ˆ์ง€๋งŒ ์ด๋ฒˆ์ฃผ ์Šคํ„ฐ๋”” ๋ชจ์ž„ ๋‚ด์— ๋‹ค ๋ด์„œ ๋‹คํ–‰์ด๋ผ๋Š” ๋งˆ์Œ์ด ๋“ค์—ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ƒ์„ธํŽ˜์ด์ง€ ๊ณผ์ œ๋ฅผ ํ•˜๋Š”๋ฐ ๋ฐ์ดํ„ฐ ์—ฐ๊ฒฐ์€ ๋ฌด์Šจ, ๋ผ์šฐํ„ฐ ์—ฐ๊ฒฐ๋ถ€ํ„ฐ ๋ง‰ํ˜€์„œ ์˜ค๋Š˜ ๊ต์œก ์‰ฌ๋Š” ์‹œ๊ฐ„ ๋•Œ๋„ ๋‹ค์‹œ ์ดํ•ดํ•˜๋А๋ผ ์• ๋ฅผ ๋จน์—ˆ๋‹ค. ์ง‘์— ์™€์„œ react ๊ฐ•์˜๋ฅผ ๋ชจ๋‘ ๋ณด๊ณ  ๊ตฌ๊ธ€๋ง์„ ํ•ด๋ณด๋‹ˆ ๋‚ด๊ฐ€ ์• ์ดˆ์— ์ดํ•ด๋ฅผ ์ž˜๋ชปํ•˜๊ณ  ์žˆ์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜๋‹ค.
๋‚˜๋Š” app.js ์— ๋ผ์šฐํŒ… ํ•ด์ค€ ๊ฒƒ๋“ค์ด ํ•ด๋‹น ๋ฉ”์ธ ํŽ˜์ด์ง€์—๋งŒ ์ ์šฉ๋˜๋Š” ์ค„ ์•Œ๊ณ  ์ƒ์„ธํŽ˜์ด์ง€๋Š” ์–ด๋–ป๊ฒŒ ๋ผ์šฐํŒ…ํ•ด์ฃผ๋Š”์ง€ ํ•ด๋งค๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ๊ทธ๋ƒฅ ์ฃผ์†Œ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ด๋™ํ•ด์ค„ ํŽ˜์ด์ง€๋“ค์„ ์ „๋ถ€ ๋„ฃ์œผ๋ฉด ๋˜๋Š”๊ฑฐ์˜€๋‹ค. ์ด๋ ‡๊ฒŒ ์‰ฌ์šด ๊ฑธ ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ ค ํ•ด๊ฒฐํ•˜๋‹ค๋‹ˆ ๋ถ€๋„๋Ÿฌ์› ๋‹ค. 
์ด์ œ ์ƒ์„ธํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ผ์šฐํŠธํ•ด์ค€ ๋’ค card ์ปดํฌ๋„ŒํŠธ์— ๊ฐ€์„œ ์ƒ์„ธ๋ณด๊ธฐ ์ชฝ์— a ํƒœ๊ทธ๋ฅผ link ๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ๊ณ  ๊ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์œผ๋ฉด ์ƒ์„ธ๋ณด๊ธฐ ํŽ˜์ด์ง€๋Š” ์™„์„ฑํ•  ๊ฒƒ ๊ฐ™๋‹ค. 

6/22
์˜ค๋Š˜๋„ ๋น„์ฆˆ๋‹ˆ์Šค ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ๋ฐฐ์šฐ๋Š” ๋‚ ์ด๋ผ ๊ต์œก ๋•Œ๋Š” ๋”ฐ๋กœ ๊ณต๋ถ€๋ฅผ ํ•˜์ง„ ๋ชปํ–ˆ๋‹ค.
์›๋ž˜ ์˜ค๋Š˜ ์Šคํ„ฐ๋”” ๋ชจ์ž„์ด๋ผ ์˜ค๋Š˜๊นŒ์ง€ ๋งˆ๋ฌด๋ฆฌ๋ฅผ ํ•˜๋ ค๊ณ  ํ–ˆ์œผ๋‚˜ ์–ด์ œ ์ƒˆ๋ฒฝ๊นŒ์ง€ ํ–ˆ๋Š”๋ฐ ๋ฐ์ดํ„ฐ ์—ฐ๊ฒฐ์„ ๋ชปํ•ด์„œ ๋๋‚ด์ง€ ๋ชปํ–ˆ๋‹ค. ์˜ค๋Š˜ ์™€์„œ ์„ ํ™˜๋‹˜์ด ์ƒ์„ธํŽ˜์ด์ง€๋ฅผ ๋‹ค ํ–ˆ๋‹ค๊ณ  ํ•˜์…”์„œ ๋ดค๋Š”๋ฐ ๋„ˆ๋ฌด ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•˜์…”์„œ ๋†€๋ž๋‹ค. ๋‚ด๊ฐ€ ์ฝ”๋”ฉ ์•™๋งˆ๋กœ ๋ฐฐ์šด useparams ํ›…๋„ ์จ์„œ id ๋ฅผ ๋ฝ‘์•„๋ƒˆ๋Š”๋ฐ ์ผ๋‹จ ์„ ํ™˜๋‹˜ ๊ฒƒ์„ ์ฐธ๊ณ ํ•ด์„œ id ์—ฐ๊ฒฐ๊นŒ์ง€๋Š” ๋งˆ์ณค๋‹ค. ํ•˜์ง€๋งŒ props ๋กœ ์—ฐ๊ฒฐํ•ด์„œ ๊ฐ๊ฐ ๋„ฃ๊ณ  ์‹ถ์€ ์ž๋ฆฌ์— props.title ๋“ฑ ์ด๋ ‡๊ฒŒ ๋„ฃ์—ˆ๋Š”๋ฐ ์•„์˜ˆ ๋นˆ์นธ์œผ๋กœ ๋‚˜์™”๋‹ค. console ์— props ๋„ ๋„์›Œ๋ดค๋Š”๋ฐ object ๋กœ ์ „์ฒด๊ฐ€ ์ž˜ ๋‚˜์™€์„œ ๋ฐ์ดํ„ฐ๋Š” ์™œ ์•ˆ ๋‚˜์˜ค๋Š”์ง€ ์• ๋ฅผ ๋จน์—ˆ๋‹ค. ๋‚ด์ผ ๊ฐ•์‚ฌ๋‹˜๊ป˜ ์—ฌ์ญค๋ด์•ผ ๊ฒ ๋‹ค.

6/23
์˜ค๋Š˜์€ todo-list ๋ฅผ ๋งŒ๋“ค์–ด๋ดค๋‹ค.
์‚ฌ์‹ค todo-list ๋Š” ์ฝ”๋”ฉ์•™๋งˆ์—์„œ ๋ฐฐ์› ๋˜ ๊ฒƒ์ด๋ž‘ ์•„์ฃผ ๋น„์Šทํ•ด๋ณด์˜€๋Š”๋ฐ ๊ฐ•์‚ฌ๋‹˜์ด ์‹ค์ œ๋กœ ์ฝ”๋”ฉํ•œ ๊ฑด ๋„ˆ๋ฌด๋‚˜ ์–ด๋ ค์› ๋‹ค.. ํŠนํžˆ crud ๋ถ€๋ถ„์ด ์ข€ ๋‹ฌ๋ž๋Š”๋ฐ ์ฝ”๋”ฉ์•™๋งˆ์—์„  ํ•จ์ˆ˜ ์•ˆ์— method : delete ์ด๋Ÿฐ ์‹์œผ๋กœ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ ๊ฐ•์‚ฌ๋‹˜์€ ํ•จ์ˆ˜๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜์…จ๋‹ค. ์ฝ”๋”ฉ์•™๋งˆ์—์„œ ์‚ฌ์šฉํ•œ ๊ฒƒ๊ณผ ๊ฐ•์‚ฌ๋‹˜์ด ์‚ฌ์šฉํ•œ ๊ฒƒ์ด ๋ฌด์Šจ ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์–ด์„œ ํ˜ผ๋ž€์Šค๋Ÿฌ์› ๋‹ค. ์ปดํฌ๋„ŒํŠธ ์ค‘์ฒฉ์„ ๋งŽ์ด ์ด์šฉํ•˜์…”์„œ ๋„ˆ๋ฌด ํ—ท๊ฐˆ๋ ธ์ง€๋งŒ ์ง‘์— ์™€์„œ ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ๋œฏ์–ด๋ณด๋ฉฐ ์ตœ๋Œ€ํ•œ ์ดํ•ดํ•ด๋ณด๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ๋‹ค.
์•„์นจ์— ์˜ค์ž๋งˆ์ž ๊ฐ•์‚ฌ๋‹˜๊ป˜ ์ƒ์„ธํŽ˜์ด์ง€์— ๋ฐ์ดํ„ฐ๊ฐ€ ์™œ ์•ˆ ๋“ค์–ด๊ฐ€๋Š”์ง€ ์—ฌ์ญค๋ดค๋”๋‹ˆ ๊ฐ ์ƒ์„ธํŽ˜์ด์ง€๋งˆ๋‹ค ๋งž๋Š” ํ•œ ๋”๋ฏธ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ€์•ผ ํ•˜๋Š”๋ฐ ๊ฐ๊ฐ ๋ฐ์ดํ„ฐ ์ „๋ถ€๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์…”์„œ ๋จธ์“ฑํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๊ณ  ๋ณด๋‹ˆ ์–ด์ œ console ์— props ๋ฅผ ๋„์šธ ๋•Œ 0 ๋ถ€ํ„ฐ ๋ชจ๋“  ์ธ๋ฑ์Šค๊ฐ€ ์žˆ๋˜ ๊ฒŒ ๊ทธ ์ด์œ ์˜€๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๊ฐ•์‚ฌ๋‹˜์ด ๋‹ค์‹œ ์ƒ์„ธํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ์—์„œ map ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ๋ฆฌ๋ผ๊ณ  ํ•˜์…”์„œ ๊ทธ๋ ‡๊ฒŒ ํ•ด๋ณด๋ ค๊ณ  ํ–ˆ๋”๋‹ˆ ๋‹ค๋ฅธ ๊ต์œก์ƒ์ด ์„ ํ™˜๋‹˜ ๊ฒƒ์„ ๋ณด์—ฌ์ฃผ๋ฉด์„œ ์ด๊ฑฐ ํ•˜๋‚˜๋ฉด ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค๊ณ  ํ•˜์…จ๋‹ค. ์ž์„ธํžˆ ๋ณด๋‹ˆ ๋‚ด๊ฐ€ ์–ด์ œ const id = props.id(id-1); ์ด๋ ‡๊ฒŒ ํ•˜๋Š”๋ฐ ์ž๊พธ ์—๋Ÿฌ๊ฐ€ ๋‚˜์„œ ๋‚˜๋Š” prop ๋ฐ์ดํ„ฐ ์•ˆ์— ๊ฐ id ๋ฅผ ๋ฝ‘์•„์˜ค๊ณ  ์‹ถ์€๊ฑด๋ฐ ์™œ ์•ˆ๋ ๊นŒ ๋จธ๋ฆฌ ํ„ฐ์ง€๊ฒŒ ๊ณ ๋ฏผํ–ˆ๋˜ ๊ฒƒ์ด const data = props.data[id - 1] ์ด๋ ‡๊ฒŒ๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ๋˜๋Š”๊ฑฐ์˜€๋‹ค. ์ƒ๊ฐํ•ด๋ณด๋ฉด props ์•ˆ์— ์žˆ๋Š” ๊ฒƒ์€ data ์ธ๋ฐ ๋ƒ…๋‹ค {props.title} ๋ฅผ ํ•ด์ฃผ๋‹ˆ ๋‹น์—ฐํžˆ ๊ฒฝ๋กœ์— ์˜ค๋ฅ˜๊ฐ€ ๋‚  ์ˆ˜ ๋ฐ–์— ์—†๋˜ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  id ๋ฅผ ๋ฝ‘์•„์˜จ ๊ฒƒ์€ data ์˜ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๋ฅผ ์ง€์ •ํ•ด์ฃผ๊ธฐ ์œ„ํ•จ์ด์—ˆ๋˜ ๊ฒƒ์ด๋‹ค. ๋๊นŒ์ง€ ์•ˆ๋˜๋˜ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๋‹ˆ ๋‹ค๋ฅธ ์ฝ”๋“œ๋“ค๋„ ์ดํ•ด๊ฐ€ ๋๋‹ค. ๋น„๋ก ์„ ํ™˜๋‹˜์˜ ์ฝ”๋“œ๋ฅผ ๋”ฐ๋ผ์นœ ๊ฒƒ์ด ๋˜์—ˆ์ง€๋งŒ ์ฝ”๋“œ๊ฐ€ ์ž‘๋™๋˜์ง€ ์•Š์•„ ๊ณ ๋ฏผํ–ˆ๋˜ ์‹œ๊ฐ„๋“ค์€ ๋‚˜์˜ ๊ฒƒ์ด์—ˆ์œผ๋‹ˆ ๊ทธ ๊ณ ๋ฏผํ–ˆ๋˜ ์‹œ๊ฐ„์„ ํ† ๋Œ€๋กœ ๋‹ค๋ฅธ ๊ณณ์— ์จ๋จน์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•œ๋‹ค.

6/24
์˜ค๋Š˜์€ useCallback, localStorage, debounce, git ๊ธฐ์ดˆ์— ๋Œ€ํ•ด ๋ฐฐ์› ๋‹ค.
useCallback ์€ ์—…๋ฐ์ดํŠธ ๋“ฑ ๊ธฐ๋Šฅ ์ƒ ์˜ํ–ฅ์€ ์—†์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋‚˜์˜จ ํ›…์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ƒํƒœ๊ฐ’์ด ๋ณ€ํ•  ๋•Œ๋งˆ๋‹ค ๊ณ„์† ์‹คํ–‰๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ์‹ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋ณด๋ฉด useEffect ์™€ ์œ ์‚ฌํ•ด๋ณด์ด๊ณ  ์‚ฌ์šฉ๋ฒ• ๋˜ํ•œ ์œ ์‚ฌํ•ด ๋‘˜์˜ ์ฐจ์ด๊ฐ€ ๋ญ”์ง€, ๊ฐ๊ฐ ์–ด๋–จ ๋•Œ ์ ์šฉํ•ด์ค˜์•ผ ํ•˜๋Š”์ง€ ํ—ท๊ฐˆ๋ ธ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฒ€์ƒ‰์„ ํ•ด๋ดค๋Š”๋ฐ useEffect ๋Š” ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง ๋  ๋•Œ๋งˆ๋‹ค ํŠน์ • ์ž‘์—…์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํ›…์ด๊ณ , useCallback ์€ ํŠน์ • ํ•จ์ˆ˜๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ์žฌ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์ •๋ฆฌํ•˜์ž๋ฉด useEffect ๋Š” ๋žœ๋”๋ง ๋ ๋•Œ๋งˆ๋‹ค ์ž‘์—…์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด๊ณ  useCallback ์€ ๋žœ๋”๋ง์ด ์•„๋‹Œ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ ์—์„œ ๋ฐ˜๋Œ€์˜ ๊ฐœ๋…์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.
local storage ๋Š” web storage ์ค‘ ํ•˜๋‚˜๋กœ object ์ฒ˜๋Ÿผ key ์™€ value ์Œ์œผ๋กœ ์„œ๋ฒ„๊ฐ€ ์•„๋‹Œ ํด๋ผ์ด์–ธํŠธ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” ์ €์žฅ์†Œ๋ฅผ ๋งํ•œ๋‹ค. session storage ์™€ ๋‹ค๋ฅด๊ฒŒ local storage ๋Š” ์ง€์šฐ์ง€ ์•Š๋Š” ์ด์ƒ ๋ธŒ๋ผ์šฐ์ € ์ž์ฒด๋‚˜ ํƒญ์„ ๋‹ซ๊ณ  ๋‹ค์‹œ ์—ด์–ด๋„ ์œ ์ง€๊ฐ€ ๋œ๋‹ค. setItem ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด ์ €์žฅํ•˜๊ณ , getItem ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด ๊บผ๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ setItem ๋ฉ”์„œ๋“œ๋กœ ๊ฐ key ์™€ value ๋ฅผ ์ง€์ •ํ•ด์ฃผ๊ณ  ์ €์žฅํ•œ ํ›„ getItem ๋ฉ”์„œ๋“œ๋กœ key ๋ฅผ ๊บผ๋‚ด๋ฉด ๊ฐ’์ด ์ถœ๋ ฅ๋œ๋‹ค. ๊ฐ์ฒด๋„ ์ €์žฅํ•ด์ค„ ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋•Œ ๊ฐ์ฒด๋Š” json ํ˜•ํƒœ์˜ stringify(๋ฌธ์ž์—ด)๋กœ ๋ณ€ํ™˜ํ•ด ์ €์žฅํ•ด์ค€ ๋’ค json ํ˜•ํƒœ์˜ parse(๊ฐ์ฒด)๋กœ ๋ณ€ํ™˜ํ•ด ๊บผ๋‚ด์™€์•ผ ํ•œ๋‹ค. ์‚ญ์ œ๋Š” removeItem ๊ณผ clear ๋กœ ๊ฐ๊ฐ ์ง€์ •๋œ key ์‚ญ์ œ์™€ ์ „์ฒด ์‚ญ์ œ๋ฅผ ์ˆ˜ํ–‰ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.
debounce ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋นˆ์นธ์— ๊ธ€์ž๋ฅผ ์“ธ ๋•Œ๋งˆ๋‹ค onChange ๊ฐ€ ์ผ์–ด๋‚˜์„œ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ์ค„์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. ๊ณต๋ฐฑ ๋“ฑ ํ…€์ด ์žˆ์„ ๋•Œ, ๊ทธ๋ฃนํ™”ํ•ด์„œ ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค. setTimeout ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋˜์ง€๋งŒ ํ›จ์”ฌ ๋ณต์žกํ•ด์ง€๋‹ˆ lodash ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์“ฐ๋ฉด ๋œ๋‹ค. ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•ด์ฃผ๊ณ  debounce( ์ ์šฉํ•  ํ•จ์ˆ˜, ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ ) ์„ ํ• ๋‹นํ•ด์ฃผ๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฒ˜๋ฆฌ๋œ๋‹ค.
์ด์ œ ๋Œ€๋ง์˜ git ์„ ๋ฐฐ์šฐ๊ฒŒ ๋๋Š”๋ฐ ๋‹ค์‹œ javascript ๋ฅผ ๋ฐฐ์šธ ๋•Œ๋กœ ๋Œ์•„๊ฐ„ ๊ฒƒ ๊ฐ™์•˜๋‹ค. ์กฐ๊ธˆ์”ฉ ์˜ฌ๋ ค๋ด์„œ ์–ด๋А์ •๋„ ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ์•Œ๊ณ  ๋ณด๋‹ˆ ๋‚˜๋Š” ์ง์ ‘ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ๋งŒ ๋ฐฐ์šฐ๊ณ  vscode ํ”„๋กœ๊ทธ๋žจ์—์„œ ํ„ฐ๋ฏธ๋„์„ ์ด์šฉํ•ด ์—…๋ฐ์ดํŠธํ•ด์ฃผ๋Š” ๋“ฑ ์›๊ฒฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฐฐ์šฐ์ง€ ์•Š์•˜๋˜ ๊ฒƒ์ด๋‹ค. ๊ฐ•์‚ฌ๋‹˜์ด ๊ธฐ์ดˆ๋ผ๊ณ  ์—ฌ๋Ÿฌ๊ฐ€์ง€๋ฅผ ์•Œ๋ ค์ฃผ์‹œ๊ธด ํ–ˆ๋Š”๋ฐ ์ „ํ˜€ ๋”ฐ๋ผ๊ฐ€์ง€ ๋ชปํ•ด์„œ ๋‹ค์‹œ ํ•œ๋ฒˆ ๋ณต์Šตํ•ด์•ผ ๋  ๊ฒƒ ๊ฐ™๋‹ค.

6/25
์ด๋ ฅ์„œ ์ƒ๋‹ด์ด ์žˆ๋Š” ๋‚ ์ด๋ผ ํ•˜๋ฃจ์˜ ์ ˆ๋ฐ˜ ์ด์ƒ์„ 1๋ถ„ ์ž๊ธฐ์†Œ๊ฐœ์™€ ์ด๋ ฅ์„œ ์ž๊ธฐ์†Œ๊ฐœ๋ฅผ ์ค€๋น„ํ•˜๋Š”๋ฐ ๋ณด๋ƒˆ๋‹ค. ์งง์€ ์‹œ๊ฐ„ ์•ˆ์— ์ตœ๋Œ€ํ•œ ๋งŽ์ด ์ค€๋น„ํ•ด ์ฒจ์‚ญ์„ ๋ฐ›๊ณ  ์‹ถ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณต์Šต์„ ํ•  ์ •์‹ ์ด ์—†์—ˆ๋‹ค. ๊ทธ๋ž˜๋„ ์ƒ๋‹ด ์ดํ›„ ํ…€์ด ์ƒ๊ฒจ 24์ผ ๋‚  ๋ฐฐ์šด ํ›…๊ณผ ๋ฉ”์„œ๋“œ๋“ค์„ ๋ณต์Šตํ–ˆ๋‹ค. 
์ƒ๋‹ด์€ ๋‚ด๊ฐ€ ์ค€๋น„๋ฅผ ๊ฑฐ์˜ ๋‹ค ํ•ด์™”๋‹ค๊ณ  ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ ๋„์™€์ฃผ์…จ๋Š”๋ฐ ๋‚ด๊ฐ€ ์ฃผ์ €๋ฆฌ์ฃผ์ €๋ฆฌ ์จ๋‚ด๋ฆฐ ๊ฒƒ์„ ๋งค๋‹ˆ์ €๋‹˜์€ ๊ฐ€๋…์„ฑ ์žˆ๊ณ  ๊น”๋”ํ•˜๊ฒŒ ์ฒจ์‚ญํ•ด์ฃผ์‹œ๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ํ‰์†Œ์—๋„ ๋Œ€๋‹จํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ํ™•์‹คํžˆ ๋‹ค๋ฅด๋‹ค๋Š” ๋А๋‚Œ์„ ๋ฐ›์•˜๋‹ค. ์ฒจ์‚ญ๋ฐ›์€ ๊ฒƒ์„ ์ˆ˜์ •ํ•˜๊ณ  ํ•œ๋ฒˆ ๋” ๋ด์ฃผ์‹ ๋‹ค๊ณ  ํ•˜์…”์„œ ๋„ˆ๋ฌด ๊ฐ์‚ฌํ–ˆ๋‹ค.

6/26
todo-list ๋ฅผ ๋ณต์Šตํ•˜๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ cbp ํ”„๋กœ์ ํŠธ ๋ชจ์ž„ ์ค€๋น„๋กœ ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ์ด๋ฒˆ cbp ํ”„๋กœ์ ํŠธ์—๋Š” ์ œํƒ€ํ”Œ๋žœ ํ™ˆํŽ˜์ด์ง€๋ฅผ ๋งก๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ ์กฐ์žฅ๋‹˜์˜ ์ฃผ๋„๋กœ ๋””์ž์ธ ์‹œ์•ˆ๊ณผ ์งˆ๋ฌธํ•  ๊ฒƒ์„ ์ค€๋น„ํ–ˆ๋‹ค. ์˜ˆ์‹œ๋ฅผ ํ† ๋Œ€๋กœ ๋””์ž์ธ ์‹œ์•ˆ์€ ์ž˜ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ ์•„๋ฌด๋ž˜๋„ ์ด๋Ÿฐ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ฒ˜์Œ์ด๋‹ค๋ณด๋‹ˆ ์งˆ๋ฌธํ•  ๊ฒƒ์„ ์ฐพ๊ธฐ๊ฐ€ ์–ด๋ ค์› ๋‹ค. ๊ธฐํš์„œ๊ฐ€ ๊ตฌ์ฒด์ ์ด์ง€ ์•Š๊ณ  ๋””์ž์ธ์ด ํ™•์‹คํžˆ ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์€ ๋‘๋ฃจ๋ญ‰์ˆ ํ•˜๊ฒŒ ์•Œ ๊ฒƒ ๊ฐ™์ง€๋งŒ ์ •ํ™•ํžˆ ์–ด๋–ค ๊ฒƒ์ด ํ•„์š”ํ•˜๊ณ  ์–ด๋А ๋ถ€๋ถ„์ด ๋ถ€์กฑํ•œ์ง€ ์ฐ์–ด๋‚ด๊ธฐ๊ฐ€ ์–ด๋ ค์› ๋‹ค. ๋ชจ์ž„์ด ๋๋‚˜๊ณ  ์ง‘์— ์™€์„  ์ด๋ ฅ์„œ ์ฒจ์‚ญ๋ฐ›์€ ๊ฒƒ์„ ํ† ๋Œ€๋กœ ์ˆ˜์ • ์ž‘์—…์„ ํ–ˆ๋‹ค.

 

 

์ƒ์„ธํŽ˜์ด์ง€ ๊ฒฐ๊ณผ๋ฌผ

01
์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋„˜๊ธฐ๋ฉด ์ฝ”๋“œ๊ฐ€ ์žˆ์–ด์š”

 

+ Recent posts