Skip to content

Latest commit

ย 

History

History
66 lines (45 loc) ยท 4.29 KB

File metadata and controls

66 lines (45 loc) ยท 4.29 KB

์„œ๋ก 

์•ˆ๋…•ํ•˜์„ธ์š” ๐Ÿ™Œ๐Ÿป 18๊ธฐ ํ”„๋ก ํŠธ ์šด์˜์ง„ย ๊น€๋ฌธ๊ธฐ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋ฏธ์…˜์—์„œ๋Š” ๋“œ๋””์–ด ํˆฌ๋‘๋ฆฌ์ŠคํŠธ์—์„œ ๋ฒ—์–ด๋‚˜ ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ์ธย messengerย ๋งŒ๋“ค๊ธฐ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฒˆ์ฃผ๋Š” ํŠน๋ณ„ํžˆ ๋””์ž์ด๋„ˆ์™€์˜ ํ˜‘์—…์œผ๋กœ ์ง„ํ–‰๋˜๋Š” ๋ฏธ์…˜์ž…๋‹ˆ๋‹ค. ๋””์ž์ด๋„ˆ๋ถ„๊ป˜์„œ ์—ด์‹ฌํžˆ ๋ฆฌ๋””์ž์ธ ํ•œ ๋ฉ”์‹ ์ € ํ”„๋กœ์ ํŠธ๋ฅผ ์—ฌ๋Ÿฌ๋ถ„๋“ค๊ป˜์„œ ๊ตฌํ˜„ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋™์‹œ์—, ์ด๋ฒˆ์ฃผ๋ถ€ํ„ฐ๋Š” ์ƒˆ๋กœย TypeScript๋ฅผ ์ ์šฉํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ์˜ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๊ฒŒ ๋  ์ˆ˜๋ก, ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๊ฐ€์ง€๋Š” props์˜ ์ข…๋ฅ˜ ๋˜ํ•œ ๋‹ค์–‘ํ•ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ฌด์ง€์„ฑ ์ฝ”๋”ฉ์„ ํ•˜๋‹ค๋ณด๋ฉด ๊ฐ€๋” ์ด props์˜ ๊ตฌ์„ฑ๊ณผ ์ด๋ฆ„, ์–ด๋–ค ํƒ€์ž…์ด ๋“ค์–ด๊ฐ€์•ผ ํ•˜๋Š”์ง€ ํ—ท๊ฐˆ๋ฆฌ๊ธฐ ๋งˆ๋ จ์ด์ฃ . ๋ณดํ†ต ๊ทธ๋Ÿด ๋•Œ ๋‹ค์‹œ ์ปดํฌ๋„ŒํŠธ ์ •์˜ ๋ถ€๋ถ„์œผ๋กœ ๋Œ์•„๊ฐ€ props์˜ ๊ตฌ์„ฑ์„ ๋ณด๊ณ  ์˜ค๊ณค ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด๋Ÿด ๋•Œ, typescript๋ฅผ ์ ์šฉํ•œ๋‹ค๋ฉด ์ปดํฌ๋„ŒํŠธ์˜ ๊ตฌ์„ฑ๊ณผ ๊ทธ ์ด๋ฆ„, ์‹ฌ์ง€์–ด ํƒ€์ž…๊นŒ์ง€ ํ•œ๋ฒˆ์— ์ž๋™์™„์„ฑ์œผ๋กœ ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ณ , ์ƒ์‚ฐ์„ฑ์ด ์ฆ๋Œ€๋˜๊ฒ ์ฃ .

๋˜ํ•œ, React Hooks์— ์กฐ๊ธˆ ๋” ์ต์ˆ™ํ•ด์ง€๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ Hook๋“ค์ด ์žˆ์ง€๋งŒ ๊ทธ ์ค‘์—์„œ๋„ย useState,ย useEffect,ย useRef๋ฅผ ์ค‘์ ์ ์œผ๋กœ ์‚ฌ์šฉํ•ด ๋ณด๋Š” ๋ฏธ์…˜์ธ๋ฐ์š”, React๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๊ต‰์žฅํžˆ ์ž์ฃผ ์“ฐ์ด๋Š” Hook๋“ค์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ถ€๋ถ„์„ ์ง‘์ค‘์ ์œผ๋กœ ๊ณต๋ถ€ํ•ด ๋ณด์•„์š”!

๊ทธ๋Ÿผ ์ด๋ฒˆ ๋ฏธ์…˜๋„ ํŒŒ์ดํŒ…์ž…๋‹ˆ๋‹ค!!๐ŸŽ‰

๋ฏธ์…˜

Key Questions

  • JavaScript๋ฅผ ์‚ฌ์šฉํ• ๋•Œ์— ๋น„ํ•ด TypeScript๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์˜ ์žฅ์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?
  • ๋””์ž์ด๋„ˆ๋กœ๋ถ€ํ„ฐ ์ „๋‹ฌ๋ฐ›์€ ํ”ผ๊ทธ๋งˆ ๋งํฌ ํ˜น์€, ํ”ผ๊ทธ๋งˆ ์บก์ฒ˜๋ณธ
  • ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ถ„๋ฆฌํ•œ ๊ธฐ์ค€์€ ๋ฌด์—‡์ธ๊ฐ€์š”?
  • ๋””์ž์ธ ์‹œ์Šคํ…œ์„ ์ ์šฉํ•˜๋ฉด์„œ ๋А๋‚€ ์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?
  • ๋””์ž์ด๋„ˆ์™€ ์†Œํ†ตํ•˜๋ฉฐ ๋А๋‚€์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

๋ฏธ์…˜ ๋ชฉํ‘œ

  • TypeScript๋ฅผ ์‚ฌ์šฉํ•ด๋ด…์‹œ๋‹ค.
  • useState๋กœ ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • useEffect์™€ useRef์˜ ์‚ฌ์šฉ๋ฒ•์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.
  • styled-components๋ฅผ ํ†ตํ•œ CSS-in-JS ๋ฐ CSS Preprocessor์˜ ์‚ฌ์šฉ๋ฒ•์— ์ต์ˆ™ํ•ด์ง‘๋‹ˆ๋‹ค.

๊ธฐํ•œ

2023๋…„ 9์›” 29์ผ ๊ธˆ์š”์ผ

ํ•„์ˆ˜ ๊ตฌํ˜„ ๊ธฐ๋Šฅ

  • ํ”ผ๊ทธ๋งˆ๋ฅผ ๋ณด๊ณ  ๊ฒฐ๊ณผํ™”๋ฉด๊ณผ ๊ฐ™์ด ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  • ๋””์ž์ธ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.
  • ์ฑ„ํŒ…๋ฐฉ ์ƒ๋‹จ์˜ ํ”„๋กœํ•„์„ ํด๋ฆญํ•˜๋ฉด ์‚ฌ์šฉ์ž๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ด๋ฉด ์ฑ„ํŒ…๋ฐฉ ํ•˜๋‹จ์œผ๋กœ ์Šคํฌ๋กค์„ ์ด๋™์‹œํ‚ต๋‹ˆ๋‹ค.
  • ๋ฉ”์„ธ์ง€์— ์œ ์ € ์ •๋ณด(ํ”„๋กœํ•„ ์‚ฌ์ง„, ์ด๋ฆ„)๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • user์™€ message ๋ฐ์ดํ„ฐ๋ฅผ json ํŒŒ์ผ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • UI๋Š” ๋ฐ˜์‘ํ˜•์„ ์ œ์™ธํ•˜๊ณ  ํ”ผ๊ทธ๋งˆํŒŒ์ผ์„ ๋”ฐ๋ผ์„œ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ๊ตฌํ˜„ ๊ธฐ๋Šฅ

  • ๋”๋ธ” ํด๋ฆญ ํ•˜๋ฉด ๊ฐ์ •ํ‘œํ˜„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ ์™ธ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์€ ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค๋ฉด ๋งˆ์Œ๊ป ์ถ”๊ฐ€ํ•ด ์ฃผ์„ธ์š”!

์ฐธ๊ณ ๋กœ ์ด๋ฒˆ ๊ณผ์ œ๋Š” ๋‹ค์Œ์ฃผ๊นŒ์ง€ ์ด์–ด์ง€๋Š” ๊ณผ์ œ์ด๋ฏ€๋กœย ํ™•์žฅ์„ฑ์„ ์ถฉ๋ถ„ํžˆ ๊ณ ๋ คํ•ด ์ฃผ์„ธ์š”. ์ฐธ๊ณ ๋กœย 4์ฃผ์ฐจ ๊ณผ์ œ์—์„œ๋Š” ์œ ์ € ๋ฐ ๊ธฐ๋Šฅ ์ถ”๊ฐ€์™€ Routing์„ย ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ดย recoil์ด๋‚˜ย redux๋ฅผ ์ด์šฉํ•œ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ํ•ด๋ณด์‹œ๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค!! ๋ชจ๋‘ ๊ณต์‹๋ฌธ์„œ ๋งŽ์ด ์ฝ์–ด๋ณด์‹œ๊ณ  ์ž์‹ ๋งŒ์˜ ์ƒํƒœ๊ด€๋ฆฌ ์กฐํ•ฉ๋„ ์ฐพ์•„๋ณด๋ฉด ์žฌ๋ฐŒ์„ ๊ฑฐ์—์š” XD

๋งํฌ ๋ฐ ์ฐธ๊ณ ์ž๋ฃŒ