๐ŸŒฑ SeSac/์Šคํ„ฐ๋”” ์ผ๊ธฐ

[7์ฃผ์ฐจ] ์–ด์ฐŒ์ €์ฐŒ ํ•ด๋‚ด๋Š” ๋‚ ์˜ ์—ฐ์†.

Jane K 2022. 6. 28. 22:18

6/13
 ์˜ค๋Š˜์€ react props, usestate ๋“ฑ ์ „์— ๋ฐฐ์šด ๊ฒƒ๋“ค์„ ์ด์šฉํ•ด ์ƒํ’ˆํŽ˜์ด์ง€๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“œ๋Š” ๊ฒƒ๊ณผ react icons ํ”Œ๋Ÿฌ๊ทธ์ธ, json ํŒŒ์ผ ์ •๋ณด๋“ค์„ ๊ฐ๊ฐ ๋„ฃ์–ด์„œ ํƒญ ๋งŒ๋“ค๊ธฐ, filter ๋ฌธ, ์ฝœ๋ฐฑํ•จ์ˆ˜ ์— ๋Œ€ํ•ด ๋ฐฐ์› ๋‹ค.
 ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ค‘์ฒฉ๋ ์ˆ˜๋ก ์ ์  ์–ด๋ ค์›Œ์กŒ๋‹ค. map ๋ฌธ์œผ๋กœ json ๋ฐ์ดํ„ฐ๋“ค์„ ๋Œ๋ ค ๊ฐ๊ฐ ๋งž๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ๋„ฃ์–ด์ฃผ๊ณ  filter ๋ฌธ์œผ๋กœ ์กฐ๊ฑด์„ ๋‹ฌ์•„ ๊ฑฐ๋ฅธ ๋ฐ์ดํ„ฐ๋งŒ ๋ฐ˜๋ณตํ•˜๋„๋ก ๋งŒ๋“ค์–ด์คฌ๋Š”๋ฐ map ๋ฌธ๊ณผ filter ๋ฌธ์˜ ์ •ํ™•ํ•œ ์ฐจ์ด๋ฅผ ์•Œ ์ˆ˜ ์—†์–ด ์–ด๋ ค์› ๋‹ค. ๊ฐ li ์— ๋ฐ์ดํ„ฐ ์ •๋ณด๋ฅผ ๋„ฃ์–ด์ค„ ๋•Œ ์ค‘๊ด„ํ˜ธ ๋ฐ–์— ๋ฏธ๋ฆฌ ํ‘œ์‹œํ•ด๋‘” ๋ถˆ๋Ÿฌ์˜จ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ง€์šฐ์ง€ ์•Š์•„์„œ ํฐํ™”๋ฉด์ด ๋–ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์–ผ๋งˆ ์ „ sns ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค ๋•Œ ํฐํ™”๋ฉด ์—๋Ÿฌ๋ฅผ ์•„์ง๋„ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•œ ๊ฒƒ์ด ์ƒ๊ฐ๋‚˜์„œ ๋Œ์•„๊ฐ€ ์‚ดํŽด๋ดค์ง€๋งŒ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜๋‹ค. ๊ฐ•์‚ฌ๋‹˜ ๊นƒํ—ˆ๋ธŒ์— ์˜ฌ๋ผ์™€ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•ด๋„ ํ•ด๊ฒฐ์ด ๋˜์ง€ ์•Š์•„์„œ ๊ฒฐ๊ตญ ๊ฐ•์‚ฌ๋‹˜์˜ sns ํ™ˆํŽ˜์ด์ง€ ํด๋”๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„์„œ ํ•™์Šตํ–ˆ๋‹ค. ๋„๋Œ€์ฒด ์™œ ๋˜์ง€ ์•Š์•˜๋˜ ๊ฒƒ์ผ๊นŒ? ๊ฐ•์‚ฌ๋‹˜์˜ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ–ˆ๋Š”๋ฐ๋„ ๋˜์ง€ ์•Š์•˜๋˜ ๊ฒƒ์€ ์•„๋งˆ ํŒŒ์ผ ์ด๋ฆ„ ์˜คํƒ€์ด๊ฑฐ๋‚˜ ๋ฆฌ์•กํŠธ ์ž์ฒด์˜ ๋ฌธ์ œ๊ฐ€ ์•„๋‹๊นŒ ์ถ”์ธกํ•ด๋ณธ๋‹ค.
 ์ฝœ๋ฐฑํ•จ์ˆ˜๋Š” ๋‚˜์˜ ๋…ผ๋ฆฌ๋ ฅ ๋ถ€์กฑ ํƒ“์ธ์ง€ ์ž˜ ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค. ๊ฐ•์‚ฌ๋‹˜์ด ๋‹ค ๋งŒ๋“  ๊ฑธ ๋ณด๋ฉด ์–ด๋–ป๊ฒŒ ์ž‘๋™๋˜๋Š”์ง€ ์ดํ•ด๊ฐ€ ๋˜์ง€๋งŒ ๋ง‰์ƒ ์‹ค์ œ๋กœ ์ ์šฉํ•ด๋ณด๋ ค๊ณ  ํ•˜๋ฉด ๋‡Œ๊ฐ€ ๊ตณ์–ด์„œ ์ž˜ ์›€์ง์ด์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ์•ž์œผ๋กœ ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•  ๊ฒƒ ๊ฐ™์€๋ฐ ๊ฑฑ์ •์ด๋‹ค.
 ์–ด์ œ ๋ฐฐ๋ฏผ js ๋ฅผ ๋งŒ๋“ค ๋•Œ ๋‹ค์Œ ํŽ˜์ด์ง€๋กœ ๋„˜์–ด๊ฐ€๋ฉด ์ด๋ฏธ์ง€๋ฅผ ์•„๋ž˜์—์„œ ์œ„๋กœ ์˜ฌ๋ผ์˜ค๊ฒŒ ํ•˜๋Š” ๊ฑธ afterload ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ์ด๋ฏธ์ง€๊ฐ€ ํฐ๊ฑด์ง€ ์ž๊พธ ์Šคํฌ๋กค๋ฐ”๊ฐ€ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์˜ค๋Š˜ ์œคํ•˜๋‹˜ํ•œํ…Œ ๋ฌผ์–ด๋ดค๋Š”๋ฐ ํ’€ํŽ˜์ด์ง€ ์„น์…˜ ์•ˆ์— overflow:hidden ์„ ์ฃผ๊ณ  ์„น์…˜์— width:100vw, height:100vh ๋ฅผ ์ฃผ๋ฉด ์Šคํฌ๋กค๋ฐ”๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•ด์„œ ๊ทธ๋ ‡๊ฒŒ ํ•ด๋ดค๋”๋‹ˆ ์ž˜ ์ž‘๋™์ด ๋˜์—ˆ๋‹ค.
 ๊ทธ๋ฆฌ๊ณ  header ๊ฐ€ ๋งˆ์ง€๋ง‰ ์„น์…˜์œผ๋กœ ๊ฐ€๋ฉด ์„œ์„œํžˆ ์—†์–ด์ง€๋„๋ก ํ•ด์ฃผ๊ณ  ์‹ถ์–ด์„œ display:none ์„ ํ•ด์ฃผ๊ณ  afterload ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด ๋งˆ์ง€๋ง‰ ์„น์…˜์œผ๋กœ ๊ฐ€๋ฉด display:block ์„ ์คฌ๋Š”๋ฐ ๊ทธ๋ƒฅ ์—†์–ด์ง€๊ธฐ๋งŒ ํ•˜๊ณ  ์„œ์„œํžˆ ์—†์–ด์ง€๋Š” ๊ฑด ๋˜์ง€ ์•Š์•˜๋‹ค. ์ด๊ฒƒ๋„ ์˜ค๋Š˜ ์œคํ•˜๋‹˜ํ•œํ…Œ ๋ฌผ์–ด๋ดค๋”๋‹ˆ opacity:0 ์œผ๋กœ ์ฃผ๋ฉด ๋œ๋‹ค๊ณ  ํ•ด์„œ opacity ์™€ transition ์„ ๊ฐ™์ด ์คฌ๋”๋‹ˆ ์ œ๋Œ€๋กœ ์ž‘๋™ํ–ˆ๋‹ค.
ํ•˜์ง€๋งŒ ๋‹ค์‹œ ๋‹ค๋ฅธ ์„น์…˜์œผ๋กœ ์˜ฌ๋ผ๊ฐ€๋ฉด ๋‚˜์˜ค์ง€ ์•Š์•„์„œ onleave ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด opacity ์™€ transition ์„ ์คฌ๋Š”๋ฐ ๊ฐ‘์ž๊ธฐ ์„น์…˜ 1์˜ background ๊ฐ€ ์—„์ฒญ๋‚˜๊ฒŒ ๊ธธ์–ด์ง€๋ฉด์„œ ๋‚˜๋จธ์ง€ ์„น์…˜์ด ๊ฐ€๋ ค์กŒ๋‹ค. ๋๊นŒ์ง€ ํ•ด๊ฒฐ์„ ํ•˜์ง€ ๋ชปํ•˜๋‹ค๊ฐ€ ๋ฐฉ๊ธˆ ํ˜น์‹œ๋‚˜ ์‹ถ์–ด์„œ onleave ๋ฉ”์„œ๋“œ if ๋ฌธ ์•ˆ ์Šคํƒ€์ผ ์ค€ ๊ฒƒ์— ๋์— ์„ธ๋ฏธ์ฝœ๋ก ์„ ๋ถ™์˜€๋”๋‹ˆ ์ž˜ ์ž‘๋™ํ–ˆ๋‹ค. ๊ณ ๋ฏผ์„ ๋งŽ์ด ํ–ˆ๋Š”๋ฐ ์„ธ๋ฏธ์ฝœ๋ก ์„ ๋ถ™์ด์ง€ ์•Š์•„์„œ ๊ทธ๋žฌ๋‹ค๋‹ˆ ์ข€ ํ—ˆ๋ฌดํ–ˆ๋‹ค. ์•ž์œผ๋กœ ์ด๋Ÿฐ ์‹ค์ˆ˜๋Š” ์•ˆํ•˜๋„๋ก ๋…ธ๋ ฅํ•ด์•ผ ๊ฒ ๋‹ค.

6/14
 ๋ฐฐ๋ฏผ js ์— ์˜ค๋ฅธ์ชฝ ์ ์„ ๋ˆ„๋ฅด๋ฉด ์ด๋™ํ•˜๊ฒŒ ํ•˜๋Š” ๊ฑธ manubar ๋ผ๊ณ  ์คฌ๋Š”๋ฐ ์Šคํฌ๋ฆฝํŠธ์— navigation ์œผ๋กœ ์ฃผ๋ฉด ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ด๋ฏธ์ง€๋กœ ์ ์„ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•์ด ๋‚˜์˜ค์ง€ ์•Š์•„์„œ ๊ฐ•์‚ฌ๋‹˜๊ณผ ํ•จ๊ป˜ ๋งŒ๋“ค์—ˆ๋˜ ํ’€ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ ๋ดค๋”๋‹ˆ menu ์™€ anchor ๋ฉ”์„œ๋“œ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•˜๋‹ค. ๋งŒ๋“ค์—ˆ๋˜ ๋งˆํฌ์—…์„ ๋ณต์‚ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐํ•˜๊ณ  ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์— ๋งž๋„๋ก ์ˆ˜์ •ํ–ˆ๋”๋‹ˆ ์ œ๋Œ€๋กœ ์ž‘๋™ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ํด๋ฆญํ•˜๋ฉด ์ ์— ๋™๊ทธ๋ผ๋ฏธ ์น˜๋Š” ๊ฒƒ์—์„œ ๋˜ ๋ง‰ํ˜€ ๊ตฌ๊ธ€๋ง์„ ํ•ด๋ด๋„ ๋‹ต์ด ๋‚˜์˜ค์ง€ ์•Š์•„์„œ ๊ฐ•์‚ฌ๋‹˜๊ณผ ๋งŒ๋“  ํ’€ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ ๋ณด๋‹ˆ class: active ๋ฅผ ๋ถ™์—ฌ๋†จ๋˜ ๊ฒŒ ๋ณด์˜€๋‹ค. ๊ทธ๊ฑธ ๊ฐœ๋ฐœ์ž ๊ฒ€์‚ฌ๋ฅผ ์ผœ์„œ ๋ดค๋”๋‹ˆ ํด๋ฆญ๋  ๋•Œ๋งˆ๋‹ค ๋ฐ”๋€Œ๊ณ  active ๋กœ ์ž‘๋™๋˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ๋‹ค์‹œ ํ’€ํŽ˜์ด์ง€ active ๋ฅผ ๊ตฌ๊ธ€๋งํ•ด๋ณด๋‹ˆ active ๋ผ๋Š” class ๊ฐ€ ํ’€ํŽ˜์ด์ง€์— ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž‘๋™๋˜๋„๋ก ์Šคํฌ๋ฆฝํŠธ ์„ค์ •์ด ๋˜์–ด ์žˆ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ active ํด๋ž˜์Šค์— css๋ฅผ ์„ค์ •ํ–ˆ๋”๋‹ˆ ์ž˜ ์ž‘๋™์ด ๋˜์—ˆ๋‹ค.
 ์ง€๊ธˆ๊นŒ์ง€ ๋ฐฐ์šด ๋ฆฌ์•กํŠธ ๋ณต์Šต์„ ํ–ˆ๋‹ค. state ์— ๋Œ€ํ•œ ๊ฐ•์˜๋ฅผ ๋ดค๋Š”๋ฐ ๋ฆฌ์•กํŠธ์—๋Š” state ๋ผ๋Š” hook ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ๊ฐ€์ง€ hook ์ด ์žˆ๋Š” ๊ฑธ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ ์˜ค๋žœ๋งŒ์— ํœด์‹์„ ์ฆ๊ธฐ๋А๋ผ ๋‹ค๋ฅธ hook ์€ ๋ณด์ง€ ๋ชปํ–ˆ๋‹ค. ์ฃผ๋ง์— ํ•œ๋ฒˆ ๋ด์•ผ๊ฒ ๋‹ค.

6/15
 ์˜ค๋Š˜์€ promise, fetch ํ•จ์ˆ˜, async await ๋ฌธ๋ฒ•, axios ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, useEffect ์— ๋Œ€ํ•ด ๋ฐฐ์› ๋‹ค.
 ์•„๋ฌด๋ž˜๋„ fetch ํ•จ์ˆ˜๊ฐ€ ํ•œ๋ˆˆ์— ๋ณด๊ธฐ๊ฐ€ ์‰ฌ์›Œ์„œ ์ œ์ผ ์‰ฌ์›Œ๋ณด์ธ๋‹ค. ํ•˜๋‚˜์”ฉ ๊ฒ€์ƒ‰ํ•ด๋ณด๋ฉด์„œ ๋‹ค๋ฅธ ๊ฑด ์ดํ•ดํ–ˆ๋Š”๋ฐ useEffect ๋Š” ๋„ˆ๋ฌด ์–ด๋ ค์› ๋‹ค. ๊ฐ•์˜๋ฅผ ๋ด๋„ ๊ฐ•์‚ฌ๋‹˜๊ณผ ํ–ˆ๋˜ ์ฝ”๋“œ๋Š” ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ์ง‘์— ์™€์„œ ๋‹ค์‹œ ๋ณต์Šต์„ ํ–ˆ๋Š”๋ฐ๋„ response => response.data ์˜ response ๋Š” ๋ฌด์Šจ ๋œป์ธ์ง€, useEffect ์•ˆ์˜ ํ•จ์ˆ˜๋ฅผ ์“ด ์ด์œ ๊ฐ€ ๊ณ„์† ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ๋“ค์ด์ง€ ์•Š๊ณ  ์ฒซ ๋žœ๋”๋ง ๋•Œ๋งŒ ๋ถ€๋ฅด๊ณ  ์‹ถ์–ด์„œ ๊ทธ๋Ÿฐ๊ฑด์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค. ์•„๋ฌด๋ž˜๋„ ๊ฐ•์‚ฌ๋‹˜๊ณผ ์ž์ฃผ ์จ๋ณด๋ฉด์„œ ์ต์ˆ™ํ•ด์ ธ์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.
๋ฐฐ๋ฏผ js ๋ฅผ ๋งŒ๋“ค ๋•Œ ์ฒซ ์„น์…˜์—์„œ ์ƒˆ๋กœ๊ณ ์นจ๋  ๋•Œ๋งˆ๋‹ค ์„œ์„œํžˆ ๋‚˜ํƒ€๋‚˜๊ฒŒ ํ•˜๋Š” ๊ฑธ ํ•˜๊ณ  ์‹ถ์–ด์„œ ์• ๋‹ˆ๋ฉ”์ด์…˜์œผ๋กœ ์คฌ์—ˆ๋Š”๋ฐ ๋ฐฐ๋ฏผ์„ ์ฐธ๊ณ ํ•ด๋ณด๋‹ˆ ์ฒ˜์Œ๋ถ€ํ„ฐ opacity : 0 ์„ ์ฃผ๊ณ  ์• ๋‹ˆ๋ฉ”์ด์…˜์œผ๋กœ 0% ๋•Œ๋Š” opacity : 0, 100% ๋•Œ๋Š” opacity : 1 ๋กœ ๋˜์–ด์žˆ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋„ ๊ทธ๋ ‡๊ฒŒ ์คฌ๋Š”๋ฐ ๊ทธ๊ฒŒ ๋ฌธ์ œ์˜€๋˜๊ฑด์ง€ ๋‚˜์ค‘์— ๋งˆ์ง€๋ง‰ ์„น์…˜์—์„œ ํ—ค๋”๊ฐ€ ์—†์–ด์ง€๊ณ  ๋‹ค์‹œ ๋‹ค๋ฅธ ์„น์…˜์œผ๋กœ ์˜ฌ๋ผ๊ฐ€๋ฉด ๋‚˜ํƒ€๋‚˜๋„๋ก ํ•˜๋Š” ๊ฒŒ ๋˜์ง€ ์•Š์•˜๋‹ค. onleave ์— ์คฌ๋‹ค๊ฐ€, afterload ์— ์คฌ๋‹ค๊ฐ€, classlist.add ๋กœ ์คฌ๋‹ค๊ฐ€ ๋ณ„ ๋‚œ๋ฆฌ๋ฅผ ์ณ๋ด๋„ ๋˜์ง€ ์•Š์•„์„œ ๊ฐ•์‚ฌ๋‹˜๊ป˜ ์—ฌ์ญค๋ดค๋”๋‹ˆ afterRender ๋ฅผ ์ฃผ๋ฉด ๊ตฌ์กฐ๊ฐ€ ์ƒ์„ฑ๋œ ์งํ›„ ๋ฐ”๋กœ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋œ๋‹ค๊ณ  ์ด ๋ฉ”์„œ๋“œ๋ฅผ ์จ๋ณด๋ผ๊ณ  ํ•˜์…”์„œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์คฌ๋˜ ๊ฒƒ๊ณผ opacity : 0 ์„ ๋”ฐ๋กœ ํด๋ž˜์Šค๋กœ ๋นผ์„œ classlist.add ๋ฅผ ํ•ด์คฌ๋”๋‹ˆ ์ฒซํ™”๋ฉด์— ๋‚˜ํƒ€๋‚˜๋Š” ๊ฑด ์ œ๋Œ€๋กœ ์ž‘๋™์ด ๋๋‹ค. ํ•˜์ง€๋งŒ ์•„์ง๋„ ๋งˆ์ง€๋ง‰ ์„น์…˜์—์„œ ์—†์–ด์ง€๊ณ  ์˜ฌ๋ผ๊ฐ€๋ฉด ๋‹ค์‹œ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฑด ๊ตฌํ˜„์ด ๋˜์ง€ ์•Š์•˜๋Š”๋ฐ ์œค์ฃผ๋‹˜์˜ ๋„์›€์œผ๋กœ off ๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ add ํ•˜๋ฉด ๋งˆ์ง€๋ง‰ ์„น์…˜์—์„œ ์—†์–ด์ง€๊ณ , on ์„ ํ•˜๋ฉด ๋‹ค์‹œ ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทผ๋ฐ z-index : -1; opacity : 0; ์— transition : all 1s ์„ ์คฌ๋Š”๋ฐ๋„ ์„œ์„œํžˆ ๋˜๋Š”๊ฒŒ ์ž‘๋™์ด ๋˜์ง€ ์•Š์•˜๋‹ค. ์Šคํ„ฐ๋”” ๋ชจ์ž„์ด ์‹œ์ž‘๋˜์–ด ๊ณ ์น˜์ง€ ๋ชปํ•˜๊ณ  ๋„˜์–ด๊ฐ”๋‹ค.
 ์Šคํ„ฐ๋”” ๋ชจ์ž„ ๋•Œ ๋‹ค๋ฅธ ๋ถ„๋“ค์ด ํ•œ๊ฑธ ๋ดค๋Š”๋ฐ ์ง€์˜๋‹˜์€ ๋ณธ๋ฌธ ์„น์…˜์— ์ด๋ฏธ์ง€๊ฐ€ ์›€์ง์ด๋Š” ๊ฑธ ๊ณต๋™ ํด๋ž˜์Šค๋กœ ์ฃผ๊ณ  ๋‹ค๋ฅด๊ฒŒ ์›€์ง์ด๋Š” ๊ฑด ๋‹ค๋ฅธ ํด๋ž˜์Šค๋กœ ์ค˜์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘๋™๋˜๋„๋ก ํ•œ ๊ฑธ ๋ดค๋‹ค. ๋‚˜๋Š” ์ž‘๋™๋งŒ ๋˜๋ผ ํ•˜๋Š” ๋งˆ์Œ์œผ๋กœ ํ•ด์„œ ๊ทธ๋Ÿฐ์ง€ ์ฝ”๋“œ๊ฐ€ ์—„์ฒญ๋‚˜๊ฒŒ ๊ธธ์–ด์กŒ๋Š”๋ฐ ์ง€์˜๋‹˜์ด ํ•œ ๊ฑธ ๋ณด๋‹ˆ ๋‚˜์˜ ๊ธด ์ฝ”๋“œ๊ฐ€ ๋„ˆ๋ฌด๋‚˜ ๋ถ€๋„๋Ÿฌ์›Œ์กŒ๊ณ  ์ž๊ทน์„ ๋งŽ์ด ๋ฐ›์•˜๋‹ค.
 ๊ทธ๋ฆฌ๊ณ  ๋ฐฐ๋ฏผ์€ ๋‹ค๋ฅธ ์„น์…˜์œผ๋กœ ๊ฐ”๋‹ค๊ฐ€ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•˜๋ฉด ์ฒซ๋ฒˆ์งธ ์„น์…˜์œผ๋กœ ๋Œ์•„์™”๋Š”๋ฐ ๋‚˜๋Š” ๊ทธ๋ ‡๊ฒŒ ๋˜์ง€ ์•Š์•„์„œ ๋‹ค๋ฅธ ๋ถ„๋“ค๊ป˜ ๋ฌผ์–ด๋ณด๋‹ˆ ์˜ˆ์ง„๋‹˜์ด ์Šค์™€์ดํ”„๋กœ ํ•˜๋ฉด ์ค„ ์ˆ˜ ์žˆ๋‹ค๋ฉฐ ์•Œ๋ ค์ฃผ์…จ๋Š”๋ฐ ๋‚˜์ค‘์— ์Šค์™€์ดํ”„๋กœ๋„ ๋งŒ๋“ค์–ด๋ด์•ผ ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

6/16
๋ผ์šฐํŒ…์ด๋ผ๋Š” ๊ฑธ ๋ฐฐ์› ๋‹ค.
 ๋ผ์šฐํŒ…์€ ํ•œ ํŽ˜์ด์ง€ ์•ˆ์—์„œ ํŽ˜์ด์ง€ ์ด๋™์„ ํ•˜๋Š” ๊ธฐ๋Šฅ์ธ๋ฐ ์ด์ œ ์ด๋Ÿฐ ๊ธฐ๋Šฅ์„ ๋ฐฐ์šฐ๋‹ˆ ์ง„์งœ ํ•œ ํ™ˆํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ์ด ์‹ค๊ฐ์ด ๋‚ฌ๋‹ค. ๋ผ์šฐํ„ฐ๋ฅผ ๊น”๊ณ  ๊ต์œก์„ ๋ฐ›๋˜ ์ค‘ ๊ณ„์† ๋ฌดํ•œ ๋กœ๋”ฉ์ด ๋– ์„œ ๊ตฌ๊ธ€๋ง์„ ํ•ด๋ดค๋”๋‹ˆ ๋ฒ„์ „์„ ๋‚ฎ์ถฐ์•ผ ํ•œ๋‹ค๊ณ  ํ•ด์„œ ๋‚ฎ์ท„๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์•„๋ฌด๋ž˜๋„ ์ž˜ ๋˜์ง€ ์•Š์•„ ๊ฐ•์‚ฌ๋‹˜๊ป˜ ์—ฌ์ญค๋ดค๋”๋‹ˆ ๋‚ฎ์ถ”๋ฉด ์ง€๊ธˆ๊นŒ์ง€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ์™€ ๋ฒ„์ „์ด ๋งž์ง€ ์•Š์•„ ์ž‘๋™์ด ๋˜์ง€ ์•Š์„ ๊ฑฐ๋ผ๊ณ  ํ•˜์…”์„œ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ฐพ๊ธฐ ์œ„ํ•ด ๊ตฌ๊ธ€๋ง์„ ํ•ด๋ดค๋‹ค. ๊ทธ๋žฌ๋”๋‹ˆ package.json ํŒŒ์ผ์˜ react-router-dom ์ด ๊ณณ์˜ ๋ฒ„์ „์„ ์ž„์˜๋กœ ๋ณ€๊ฒฝํ•œ ํ›„ ์žฌ์„ค์น˜ํ•ด๋ดค๋”๋‹ˆ ์ œ๋Œ€๋กœ ์ž‘๋™ํ–ˆ๋‹ค. ์•„๋งˆ ๋ฒ„์ „ ๋ฐ˜์˜์ด ์ž˜ ๋˜์ง€ ์•Š์•˜๋˜ ๊ฒƒ ๊ฐ™๋‹ค.
์ง‘์— ์™€์„œ ๋ผ์šฐํŒ…์— ๋Œ€ํ•ด ํ•™์Šตํ–ˆ๋‹ค. link ํƒœ๊ทธ๋Š” react ์˜ a ํƒœ๊ทธ๋ผ๊ณ  ํ•˜๋Š”๋ฐ ์˜ˆ์ „์— a ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด warning ์ด ๋–ด๋˜ ์ด์œ ๊ฐ€ ์ด๊ฑฐ์˜€๋‚˜ ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. useParams, useLocation, useSearchParams, useNavigate ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๋“ค๋„ ์žˆ์—ˆ๋Š”๋ฐ ์ฃผ๋ง์— ์ฒœ์ฒœํžˆ ๊ฐ•์˜์™€ ํ•จ๊ป˜ ํ•œ๋ฒˆ ๋ด์•ผ๊ฒ ๋‹ค.

6/17
๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด ํ•˜๋‚˜์”ฉ ์ด๋™ํ•˜๋Š” ํƒญ ๋งŒ๋“ค๊ธฐ, useRef ์— ๋Œ€ํ•ด ๋ฐฐ์› ๊ณ  ์ƒ์„ธํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ ๊ณผ์ œ๋ฅผ ๋ฐ›์•˜๋‹ค..
 ์˜ค๋Š˜์€ ํ•˜๋ฃจ์ข…์ผ swiper ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ฒ˜๋Ÿผ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ํ•˜๋‚˜์”ฉ ์ด๋™ํ•˜๋Š” ํƒญ์„ react ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ์ž‘์—…์„ ํ–ˆ๋Š”๋ฐ ์˜ค์ „์— ์œ„๋กœ ์˜ฌ๋ผ๊ฐ€๋Š” ๊ฑธ ํ•  ๋• ๋‚˜๋ฆ„ ๋”ฐ๋ผ๊ฐ”๋Š”๋ฐ ์˜คํ›„์— ์˜†์œผ๋กœ ์Šฌ๋ผ์ด๋“œํ•˜๋“ฏ ์ด๋™ํ•˜๋Š” ๊ฑด ๋”ฐ๋ผ๊ฐ€์งˆ ๋ชปํ–ˆ๋‹ค. marginleft ๋ฅผ ์ค˜์„œ ์™œ ์•ž์œผ๋กœ ๊ฐ€๊ฒŒ ํ•ด์ฃผ๋Š”๊ฑด์ง€, ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ด๋™์‹œํ‚ค๊ธฐ ์œ„ํ•ด ํƒญ์„ ํ•˜๋‚˜ ๋” ์ถ”๊ฐ€ํ•ด์ฃผ๋Š” ์ด์œ ๊ฐ€ ๋ญ”์ง€ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ์ฃผ๋ง์— ์‰ด ๋•Œ ๋‹ค์‹œ ๋ณต์Šต์„ ํ•ด์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค. 

6/19
์ฝ”๋”ฉ์• ํ”Œ react ๊ฐ•์˜๋ฅผ ๋ณด๋ฉฐ ์ง€๊ธˆ๊นŒ์ง€ ๊ฐ•์‚ฌ๋‹˜๊ณผ ํ•จ๊ป˜ ๋ฐฐ์šด ๊ฒƒ ์ดํ•ดํ•˜๊ณ  ๋ณต์Šต, 17์ผ์ž ํƒญ ๋งŒ๋“ค๊ธฐ ์ดํ•ด ๋ฐ ๋ณต์Šต

 

 

๋ฐฐ๋‹ฌ์˜ ๋ฏผ์กฑ ํด๋ก ์ฝ”๋”ฉ ๊ฒฐ๊ณผ๋ฌผ

01234567