โœ๏ธ DevLog/Devcourse

[DevCourse] ์ƒ์„ฑํ˜• AI ํ™œ์šฉ ๋ฐฑ์—”๋“œ ๋ฐ๋ธŒ์ฝ”์Šค 13์ผ์ฐจ

hyebin (Helia) 2025. 4. 21. 18:17
๋ฐ˜์‘ํ˜•

์ง€๋‚œ 12์ผ ์ฐจ ์ˆ˜์—…์€ ๊ฑด๊ฐ• ๋ฌธ์ œ๋กœ ์ˆ˜์—…์— ์ฐธ์—ฌํ•˜์ง€ ๋ชปํ–ˆ์ง€๋งŒ,

๋‹คํ–‰ํžˆ ์˜ค๋Š˜ ์ˆ˜์—… ์‹œ์ž‘ ์ „ ์ง€๋‚œ ์‹œ๊ฐ„ ๊ฐœ๋…์„ ๋‹ค์‹œ ๋ณต์Šตํ•˜๋Š” ์‹œ๊ฐ„์ด ์žˆ์–ด ํฐ ๋ฌด๋ฆฌ ์—†์ด ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

React์˜ Hook ๊ฐœ๋…๊ณผ Router ๊ตฌ์กฐ๋ฅผ ๋ฐฐ์šฐ๊ณ , Todo ๋ฆฌ์ŠคํŠธ์™€ SPA๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋Š” ์‹ค์Šต์„ ํ•˜๋ฉด์„œ

์กฐ๊ธˆ์”ฉ React์˜ ์‹ค์ „ ํ™œ์šฉ ๋ฐฉ์‹์ด ๊ฐ ์žกํžˆ๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.


๐Ÿ“Œ ์˜ค๋Š˜ ๋ฐฐ์šด ์ฃผ์š” ๋‚ด์šฉ ์ •๋ฆฌ

1. React์˜ ๋‹ค์–‘ํ•œ Hook ํ™œ์šฉ๋ฒ•

  • useState์™€ useEffect๋Š” ์ด์ œ ์ต์ˆ™ํ•ด์กŒ๊ณ ,
  • ์˜ค๋Š˜์€ ์—ฌ๊ธฐ์— ๋”ํ•ด useReducer, useMemo, useCallback, useRef ๊ฐ™์€
  • ์‹ค์ „์—์„œ์˜ ์ƒํƒœ ๊ด€๋ฆฌ์™€ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ๊ณ ๊ธ‰ Hook์„ ๋ฐฐ์› ๋‹ค.

ํŠนํžˆ useReducer๋Š” ์ƒํƒœ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ด๊ฑฐ๋‚˜ ๋ณต์žกํ•œ ํผ ๋กœ์ง์— ์œ ์šฉํ•˜๋‹ค๋Š” ๊ฑธ,

์ง์ ‘ ์˜ˆ์ œ๋ฅผ ๋”ฐ๋ผ ํ•˜๋ฉฐ ์ฒด๊ฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

2. React Router๋ฅผ ์ด์šฉํ•œ SPA ๊ตฌ์„ฑ ์‹ค์Šต

  • react-router-dom์„ ์ด์šฉํ•ด์„œ Route ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค๊ณ ,
  • Home, About ํŽ˜์ด์ง€๋ฅผ ์—ฐ๊ฒฐํ•ด ๋ณด๋ฉฐ
  • ํ•œ ํŽ˜์ด์ง€์—์„œ ํ™”๋ฉด์„ ์ „ํ™˜ํ•˜๋Š” SPA ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค.

JSX๋กœ ๋ผ์šฐํŒ…์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ์‹์ด ์ฒ˜์Œ์—” ์–ด์ƒ‰ํ–ˆ์ง€๋งŒ,

๋ Œ๋”๋ง ์—†์ด ํ™”๋ฉด์ด ์ „ํ™˜๋˜๋Š” ๋ถ€๋“œ๋Ÿฌ์šด ํ๋ฆ„์„ ์ง์ ‘ ๊ตฌํ˜„ํ•ด ๋ณด๋‹ˆ ์™œ ์ด๋ ‡๊ฒŒ ์“ฐ๋Š”์ง€ ํ™•์‹คํžˆ ์ดํ•ด๋๋‹ค.


๐Ÿงช ์˜ˆ์ œ ์‹ค์Šต – Todo ํŽ˜์ด์ง€์™€ SPA ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ

์ฒ˜์Œ์—๋Š” ์–ด๋ ค์› ์ง€๋งŒ, ์˜ˆ์ œ๋ฅผ ๋”ฐ๋ผ ํ•˜๋ฉฐ Hook ํŒจํ„ด๊ณผ ์ƒํƒœ ํ๋ฆ„์„ ์ตํžˆ๋Š” ๊ณผ์ •์ด ์œ ์ตํ–ˆ๋‹ค.

  • useState๋กœ ์ž…๋ ฅ๊ฐ’์„ ๊ด€๋ฆฌํ•˜๊ณ 
  • useRef๋กœ ๊ณ ์œ  ID๋ฅผ ์ €์žฅํ•˜๊ณ 
  • useReducer๋กœ todo ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€/์‚ญ์ œํ•˜๋ฉฐ
  • useCallback๊ณผ useMemo๋กœ ์„ฑ๋Šฅ ์ตœ์ ํ™”๊นŒ์ง€ ์ ์šฉํ•ด ๋ดค๋‹ค.

 

์ฒ˜์Œ์—” ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด ๋ณด์˜€์ง€๋งŒ,

ํ•˜๋‚˜ํ•˜๋‚˜ ๋”ฐ๋ผ๊ฐ€๋ฉฐ ๊ตฌํ˜„ํ•ด ๋ณด๋‹ˆ ์ ์  ๊ตฌ์กฐ๊ฐ€ ๋ˆˆ์— ๋“ค์–ด์˜ค๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.


๐Ÿงก ๋А๋‚€ ์ 

์˜ค๋Š˜์€ Hook์„ ํ™œ์šฉํ•ด ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ์ปดํฌ๋„ŒํŠธ๋ฅผ ์กฐํ•ฉํ•˜๊ณ , Router๋กœ ํ™”๋ฉด์„ ๋‚˜๋ˆ„๋Š” ์‹ค์Šต์„ ํ•ด๋ณด๋ฉฐ

๋‹จ์ˆœํžˆ ๊ฐœ๋…์„ ๋ฐฐ์šฐ๋Š” ๊ฒƒ์„ ๋„˜์–ด์„œ, “๋‚ด๊ฐ€ ๋ญ”๊ฐ€๋ฅผ ์ง์ ‘ ๋งŒ๋“ค๊ณ  ์žˆ๋‹ค”๋Š” ์‹ค๊ฐ์„ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

ํŠนํžˆ Todo ์•ฑ์„ ์ง์ ‘ ๋งŒ๋“ค๊ณ  ๋™์ž‘ํ•˜๋Š” ๊ฑธ ํ™•์ธํ–ˆ์„ ๋•Œ,

React๊ฐ€ ๋‹จ์ˆœํ•œ UI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋„˜์–ด์„œ ์™„์„ฑ๋„ ๋†’์€ ์›น์•ฑ์˜ ๋ผˆ๋Œ€๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋„๊ตฌ๋ผ๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๋‹ค.

 

์ฒ˜์Œ์—” ๋‚ฏ์„ค๊ณ  ์กฐ๊ธˆ ์–ด๋ ค์› ์ง€๋งŒ, ์ฝ”๋“œ๋ฅผ ๋”ฐ๋ผ ์น˜๊ณ , ํŒจํ„ด์„ ์ตํžˆ๊ณ , ์‹ค์ œ๋กœ ๋™์ž‘ํ•˜๋Š” ๊ฑธ ๋ณด๋ฉด์„œ ์ ์  ํฅ๋ฏธ๊ฐ€ ์ƒ๊ธฐ๊ณ  ์žˆ๋‹ค.

์ด์ œ React๋ฅผ ํ™œ์šฉํ•œ ๊ฐœ๋ฐœ์ด ์กฐ๊ธˆ์”ฉ ์ต์ˆ™ํ•ด์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•„ ์•ž์œผ๋กœ๊ฐ€ ๋” ๊ธฐ๋Œ€๋œ๋‹ค :)

๋ฐ˜์‘ํ˜•