Front-End : React Youtube Clone


๐Ÿฆ– ํŒ€ ์†Œ๊ฐœ

-----------------------------------------------------

๊น€์ง€์˜ ์ด์€์˜ ์กฐ์Šนํ›„ ํ™ํ˜œ์›
๊น€์ง€์˜ ์ด์€์˜ ์กฐ์Šนํ›„ ํ™ํ˜œ์›
๋ฉ”์ธํŽ˜์ด์ง€ ํ—ค๋” ๋ฐ ์‚ฌ์ด๋“œ๋ฐ”
๋ ˆ์ด์•„์›ƒ
์˜์ƒ ์ƒ์„ธ ํŽ˜์ด์ง€ ๊ฒ€์ƒ‰ ํŽ˜์ด์ง€

๐Ÿฆ– ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„

-----------------------------------------------------

1์ฐจ : 2023.01.23(์›”) ~ 2023.01.20(๊ธˆ)
2์ฐจ : 2023.01.25(์ˆ˜) ~ 2023.02.03(๊ธˆ)


๐Ÿฆ– ๊ธฐ์ˆ  ์Šคํƒ

-----------------------------------------------------

Html CSS3 React
Post CSS SASS .env Html Netlify
Github Prettier




๐Ÿฆ– ์ž‘์—… ์ƒ์„ธ ๋‚ด์šฉ

-----------------------------------------------------

๐Ÿ‘ฉโ€๐Ÿ’ป๊น€์ง€์˜

[๋ฉ”์ธํŽ˜์ด์ง€]
  • ๋น„๋””์˜ค์นด๋“œ ์ƒ์„ฑ
    • ๋น„๋””์˜ค์นด๋“œ ํ˜ธ๋ฒ„๋ง ์‹œ 3์ดˆ ํ›„ ๋น„๋””์˜ค ์žฌ์ƒ
  • ๋ฌดํ•œ ์Šคํฌ๋กค ๊ฐ€๋Šฅ

๐Ÿ‘ฉโ€๐Ÿ’ป์ด์€์˜

[๋ ˆ์ด์•„์›ƒ]
  • ์˜์ƒ ๋””ํ…Œ์ผ ํŽ˜์ด์ง€ : ์‚ฌ์ด๋“œ๋ฐ” ๋ชจ๋‹ฌ ํ˜•ํƒœ
  • ๊ทธ์™ธ ํŽ˜์ด์ง€
    • ์‚ฌ์ด๋“œ๋ฐ” ๋ฐ˜์‘ํ˜•์— ๋”ฐ๋ผ, main ์˜์—ญ ์‚ฌ์ด์ฆˆ ๋ณ€๊ฒฝ๋จ
  • ์Šคํฌ๋กค ๋””์ž์ธ
[ํ—ค๋”]
  • ๊ฒ€์ƒ‰๋ฐ” ๋ฐ˜์‘ํ˜•
[์‚ฌ์ด๋“œ๋ฐ”]
  • ๋ฐ์Šคํฌํƒ‘ ์‚ฌ์ด์ฆˆ์—์„œ๋Š” ๋ฒ„ํŠผ ํด๋ฆญ์‹œ, ํ† ๊ธ€๋กœ ์—ด๋ฆผ
  • ํƒœ๋ธ”๋ฆฟ๊ณผ ๋ชจ๋ฐ”์ผ ์‚ฌ์ด์ฆˆ์—์„œ๋Š” ๋ฒ„ํŠผ ํด๋ฆญ์‹œ, ๋ชจ๋‹ฌ๋กœ ์—ด๋ฆผ
  • ๋ชจ๋‹ฌ์ผ ๋•Œ
    • ์‚ฌ์ด๋“œ๋ฐ” ์™ธ ์˜์—ญ ํด๋ฆญ์‹œ, ๋ชจ๋‹ฌ ๋‹ซ๊ธฐ
    • ๋ฒ„ํŠผ์œผ๋กœ ๋ชจ๋‹ฌ ๋‹ซ๊ธฐ
  • hover ์‹œ์—๋งŒ ์Šคํฌ๋กค ๋ณด์ž„

๐Ÿ‘ฉโ€๐Ÿ’ป์กฐ์Šนํ›„

  • ์˜์ƒํ”Œ๋ ˆ์ด์–ด
  • ๋Œ“๊ธ€๋ฆฌ์ŠคํŠธ
  • ๊ด€๋ จ์˜์ƒ๋ฆฌ์ŠคํŠธ

๐Ÿ‘ฉโ€๐Ÿ’ปํ™ํ˜œ์›

๊ฒ€์ƒ‰ํŽ˜์ด์ง€
  • ํ•ด๋‹น ํ‚ค์›Œ๋“œ์— ๊ด€ํ•œ ์˜์ƒ ๋‚˜์˜ค๊ธฐ
    • header ์ปดํฌ๋„ŒํŠธ input์—์„œ value๊ฐ’ ๋ฐ›์•„์˜ค๊ธฐ
    • ์ฑ„๋„ ์ด๋ฏธ์ง€ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
    • ๋™์˜์ƒ ์กฐํšŒ์ˆ˜ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
    • ๋ ˆ์ด์•„์›ƒ ๋””์ž์ธ
    • ๋„ค๋น„๊ฒŒ์ด์…˜ ํ† ๊ธ€ ๋ฉ”๋‰ด ๊ตฌํ˜„
    • hover์‹œ ๋™์˜์ƒ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ธฐ๋Šฅ ๊ตฌํ˜„
์ƒ์„ธํŽ˜์ด์ง€
  • ์—ฐ๊ด€ ๋™์˜์ƒ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
  • ๋Œ“๊ธ€ ์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฐ ์ปดํฌ๋„ŒํŠธํ™”

๐Ÿฆ– ํ”ผ๋“œ๋ฐฑ ๋ฐ›๊ณ  ์‹ถ์€ ๋ถ€๋ถ„/์•„์‰ฝ๊ฑฐ๋‚˜ ์–ด๋ ค์› ๋˜ ๋ถ€๋ถ„

-----------------------------------------------------

๐Ÿ‘ฉโ€๐Ÿ’ป๊น€์ง€์˜
  • ๋™์˜์ƒ ์‹œ๊ฐ„์ด ๋ฌด์กฐ๊ฑด 2์ˆซ์ž์”ฉ ๋˜๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, 10๋ถ„ ์ดํ•˜์ธ ๋™์˜์ƒ์ธ ๊ฒฝ์šฐ, ๋ถ„์ด 2๊ธ€์ž์ผ ํ•„์š”๊ฐ€ ์—†๋Š”๋ฐ ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ์„์ง€ ๊ถ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.
  • ์กฐํšŒ์ˆ˜ ํ•จ์ˆ˜๋ฅผ ๋” ์ข‹๊ฒŒ ๋งŒ๋“ค ๋ฐฉ๋ฒ•์ด ์žˆ์„ ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.
  • ์‹œ๊ฐ„ ๊ด€๊ณ„ ์ƒ ํ•„ํ„ฐ์™€ ๋ฏธ๋‹ˆ ํ”Œ๋ ˆ์ด์–ด๋ฅผ ๋„ฃ์ง€ ๋ชปํ•ด์„œ ์•„์‰ฝ์Šต๋‹ˆ๋‹ค.
  • ๋ฌดํ•œ ์Šคํฌ๋กค๋ฅผ ์œ„ํ•ด axios๋ฅผ ๋ถˆ๋Ÿฌ์™€ ๋ฐ์ดํ„ฐ๋ฅผ usestate์— ๋„ฃ์—ˆ๋Š”๋ฐ, ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ์„์ง€ ๊ณ ๋ฏผ์ด ๋ฉ๋‹ˆ๋‹ค.
๐Ÿ‘ฉโ€๐Ÿ’ป์ด์€์˜

[ํ”ผ๋“œ๋ฐฑ ๋ฐ›๊ณ  ์‹ถ์€ ์ ]

  • ํŽ˜์ด์ง€ ๊ณตํ†ต ๋ ˆ์ด์•„์›ƒ
    • ํ—ค๋”์™€ ์‚ฌ์ด๋“œ๋ฐ”๋ฅผ fixed๋กœ ์„ค์ •ํ–ˆ๊ณ  outlet์€ ํ—ค๋”์™€ ์‚ฌ์ด๋“œ๋ฐ”๋งŒํผ ๋ฐ˜์‘ํ˜•๋งˆ๋‹ค ๋‹ค๋ฅด๊ฒŒ margin์„ ์คฌ์Šต๋‹ˆ๋‹ค. ๊ดœ์ฐฎ์€ ๋ฐฉ๋ฒ•์ธ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ํ˜น์€ fixed๋œ ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ์™€ ์•„์›ƒ๋ ›์„ margin์„ ์ฃผ์ง€ ์•Š๊ณ ๋„ ๊ฒน์น˜์ง€ ์•Š๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.
  • img src ๋Œ€์‹  import๋กœ ์ด๋ฏธ์ง€ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
    • ์ด๋ฏธ์ง€๋ฅผ img src๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒƒ์ด ์•ˆ๋ผ์„œ import ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ํ˜น์‹œ ์›์ธ์— ๋Œ€ํ•ด ์•„์‹œ๋Š” ๊ฒƒ์ด ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์ด๋“œ๋ฐ”
    • ์ฐฝํฌ๊ธฐ๋ณ„๋กœ ๋ฐ˜์‘ํ˜•์„ ๋งŒ๋“ค๊ณ , ์ฐฝํฌ๊ธฐ๋ณ„๋กœ ๋ฒ„ํŠผ์— ๋‹ค๋ฅธ ๋ชจ์…˜์„ ์ฃผ๋Š” ๊ฒƒ์ด ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค. ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ํ™•์žฅํ˜• ์‚ฌ์ด๋“œ๋ฐ”๊ฐ€ ์—†์–ด์ง€๊ฑฐ๋‚˜ ๋ชจ๋‹ฌ ์‚ฌ์ด๋“œ๋ฐ”๊ฐ€ ๋œจ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด, state๋ฅผ ํ•˜๋‚˜๋กœ ํ•˜์—ฌ ์ž‘์—…ํ•˜๋‹ค๊ฐ€ ๋‘ ๊ฐœ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ์ž‘์—…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ ํ—ค๋”์™€ ์‚ฌ์ด๋“œ๋ฐ”, app.js ์ „์ฒด ๋ ˆ์ด์•„์›ƒ ๋“ฑ ๊ณ ๋ คํ•ด์•ผํ•  ๊ฒƒ์ด ๋งŽ์•„ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค. useContext๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ–ˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

[์–ด๋ ค์› ๋˜ ์ ]

  • useRef ์‚ฌ์šฉ

  • ์‚ฌ์ด๋“œ๋ฐ” ์Šฌ๋ผ์ด๋“œ transition

    • ์ปดํฌ๋„ŒํŠธ ๊ณ„์ธต์„ ์ž˜๋ชป ์„ค๊ณ„ํ•ด transition ์ ์šฉ์ด ๋˜์ง€ ์•Š์•˜์Œ. ์ž‘์—…ํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋Œ€๋Œ€์ ์œผ๋กœ ์ˆ˜์ •ํ•ด์•ผํ–ˆ์Œ.
  • ๋ฐ˜์‘ํ˜•, ํ—ค๋”์˜ ๋ฒ„ํŠผ ํด๋ฆญ์‹œ ์ƒํ™ฉ๋ณ„๋กœ ์‚ฌ์ด๋“œ๋ฐ” ํ˜•ํƒœ๊ฐ€ ๋‹ฌ๋ผ์•ผํ–ˆ๋˜ ์ 

๐Ÿ‘ฉโ€๐Ÿ’ป์กฐ์Šนํ›„
  • ์„ค๋ช…1

  • ์„ค๋ช…2

  • ๐Ÿ‘ฉโ€๐Ÿ’ปํ™ํ˜œ์›
    • ์„ค๋ช…1
    • ์„ค๋ช…2