React.js์™€ Next.js ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋˜ ์ค‘, ์ฒ˜์Œ ๊ฐœ๋ฐœ ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ๊ณ ๋ฏผํ–ˆ๋˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•ด ๋‹ค์‹œ ํ•œ๋ฒˆ ์ •๋ฆฌํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ณผ๊ฑฐ์—๋Š” ์ด๋“ค์„ ์™„์„ฑ๋œ ๋กœ๋ด‡๊ณผ ์กฐ๋ฆฝํ˜• ๋กœ๋ด‡์— ๋น„์œ ํ•˜๊ณค ํ–ˆ์ง€๋งŒ, ์ง€๊ธˆ์€ ๋‹ค๋ฅด๊ฒŒ ์ ‘๊ทผํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ์— ์•ž์„œ ๊ธ€ ์ œ๋ชฉ๊ณผ ๊ฐ™์ด React.js์— ๋Œ€ํ•ด "๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ”„๋ ˆ์ž„์›Œํฌ ์ค‘ ๋ฌด์—‡์ธ์ง€" ํ˜ผ๋™ํ•˜๋Š” ๋ถ„๋“ค์ด ๊ณ„์‹ค๊นŒ์š”?

https://ko.legacy.reactjs.org/

 

๊ทธ๋ ‡๋‹ค๋ฉด ๊ณต์‹ ๋ฌธ์„œ๋ถ€ํ„ฐ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!

๊ณต์‹ ๋ฌธ์„œ์˜ ๋ฉ”์ธ ํŽ˜์ด์ง€์—์„œ์กฐ์ฐจ "์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ" ๋ผ๋Š” ๋ฌธ๊ตฌ๋กœ ์šฐ๋ฆฌ๋ฅผ ํ™˜์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ์ˆ˜๋งŽ์€ ์‚ฌ๋žŒ๋“ค์€ ๋„๋Œ€์ฒด ๋ฌด์—‡ ๋•Œ๋ฌธ์— ํ˜ผ๋™ํ•˜๊ฒŒ ๋œ ๊ฑธ๊นŒ์š”?

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•ด ๊ฐ„๋žตํžˆ ์„ค๋ช…๋“œ๋ฆฐ ํ›„ "React.js๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ผ๊นŒ?"  ๋ชฉ์ฐจ์—์„œ ๋‹ค์‹œ ํ•œ๋ฒˆ ์ •๋ฆฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 


๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ”„๋ ˆ์ž„์›Œํฌ๋ž€?

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

๊ฒ€์ƒ‰ ์‹œ ์‰ฝ๊ฒŒ ์•„๋ž˜์˜ ๋‚ด์šฉ๋“ค์„ ํ™•์ธํ•ด ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

"ํŠน์ •ํ•œ ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฏธ๋ฆฌ ์ž‘์„ฑ๋œ ์ฝ”๋“œ์˜ ์ง‘ํ•ฉ"

"๊ฐœ๋ฐœ์ž๊ฐ€ ํ•„์š”์— ๋”ฐ๋ผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ๋„๊ตฌ์ฒ˜๋Ÿผ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์„ ํƒ์ ์œผ๋กœ ์‚ฌ์šฉ"

 

์ •๋ฆฌํ•ด ๋ณด์ž๋ฉด, ๋ฌด์–ธ๊ฐ€๋ฅผ ๋งŒ๋“ค ๋•Œ ์œ ์šฉํ•œ ๋„๊ตฌ ๊ฐ™์€ ์นœ๊ตฌ๋„ค์š”.

๋งˆ์น˜ ๋ฏธ์šฉ์‹ค์—์„œ ์“ฐ๋Š” ๋„๊ตฌ๋‚˜ ๊ณต์‚ฌ ํ˜„์žฅ์—์„œ ์“ฐ๋Š” ๋„๊ตฌ์ฒ˜๋Ÿผ, ํŠน์ •ํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด ์ค๋‹ˆ๋‹ค.

๋“œ๋ผ์ด๊ธฐ๋กœ ๋จธ๋ฆฌ๋ฅผ ๋ง๋ฆด ํ•„์š”๋Š” ์—†์ง€๋งŒ, ํ•„์š”ํ•˜๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ด๋Ÿฐ ๋„๊ตฌ๋“ค์€ ํ•„์š”์— ๋งž๊ฒŒ ๊ณจ๋ผ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋ ˆ์ž„์›Œํฌ

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ณด๋‹ค ๋” ํฐ ๋‹จ์œ„์˜ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ์˜ ์˜ˆ์‹œ๋ฅผ ๊ฐ€์ ธ์™€ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฏธ์šฉ์‹ค์—์„œ ๋จธ๋ฆฌ๋ฅผ ๋ง๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค ์ •ํ•ด์ฃผ๊ณ , ๊ทธ ์•ˆ์—์„œ ์ •ํ•ด์ง„ ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•ด ๋จธ๋ฆฌ๋ฅผ ๋ง๋ฆฌ๋Š”(ํ•„์š”ํ•œ ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๋Š”) ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ Next.js๋Š” React.js๋ฅผ ๋ฒ ์ด์Šค๋กœ ํ•ด ์›น์„ ๋งŒ๋“œ๋Š”๋ฐ ํ•„์š”ํ•œ ์ „์ฒด์ ์ธ ํ•ด๊ฒฐ์ฑ…์„ ์ œ๊ณตํ•ด ์ค๋‹ˆ๋‹ค!

React.js์™€ Next.js์˜ ๊ด€๊ณ„

  • React.js๋Š” UI๋ฅผ ์„ ์–ธ์ ์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ์„ ํƒ์ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • Next.js๋Š” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ์ „์ฒด์ ์ธ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•˜๋ฉฐ, React๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ํฌํ•จํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ํ”„๋ ˆ์ž„์›Œํฌ์™€ React,js, Next.js์— ๋Œ€ํ•ด ๊ฐ„๋žตํžˆ ์„ค๋ช…๋“œ๋ ธ์Šต๋‹ˆ๋‹ค.

์ด์ œ ๋ณธ๋ก ์œผ๋กœ ๋“ค์–ด๊ฐ€ ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

 

React.js๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ผ๊นŒ?

์ €๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ํ•™์Šต์—์„œ "ํ”„๋ ˆ์ž„์›Œํฌ ์—†๋Š” ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ | ํ”„๋ž€์„ธ์Šค์ฝ” ์ŠคํŠธ๋ผ์ธจ๋กœ" ๊ต์žฌ์˜,

"ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ฝ”๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์ฝ”๋“œ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค"๋ผ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ๊ฐ€์žฅ ์™€๋‹ฟ์•˜์Šต๋‹ˆ๋‹ค.

๊ต์žฌ๋ฅผ ํ•™์Šตํ•˜๋ฉฐ ํ•ด๋‹น ๋ฌธ๊ตฌ๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์ •๋ง ์ž˜ ์„ค๋ช…ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์–ด์š”.

 

๋ฐœ์ทŒํ•œ ๋ฌธ์žฅ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ค์‹œ ์ •๋ฆฌํ•˜์ž๋ฉด,

  • ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ฝ”๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์‹คํ–‰ ํ๋ฆ„์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ํ˜ธ์ถœํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋‚˜๋ˆ ๋ณผ ์ˆ˜ ์žˆ๊ฒ ๋„ค์š”!
์—ฌ๊ธฐ์„œ ์ฝ”๋“œ๋ž€ ๊ตฌ์ฒด์ ์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

 

๋ฐœ์ทŒํ•œ ๋ฌธ์žฅ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ธ€์„ ์จ ๋‚ด๋ ค๊ฐˆ ์˜ˆ์ •์ด์—์š”.

์ฐธ๊ณ ํ•˜์—ฌ ์ฝ์œผ์‹ ๋‹ค๋ฉด ์ข€ ๋” ๋„์›€์ด ๋˜์‹ค ๊ฑฐ๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค!

๋‹ค์‹œ ๊ฐ•์กฐํ•˜์ž๋ฉด React.js๋Š” ๊ณต์‹์ ์œผ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค.

์ด๋Š” React๊ฐ€ UI ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋‚˜ ์ €๋ฅผ ํฌํ•จํ•œ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์€ React๋ฅผ ํ”„๋ ˆ์ž„์›Œํฌ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด์œ ๊ฐ€ ๋ญ˜๊นŒ์š”?

 

์ด๋Š” ๋ฆฌ์•กํŠธ ์ƒํƒœ๊ณ„์™€ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๊ฐ•๋ ฅํ•œ ์˜ํ–ฅ๋ ฅ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
React๋Š” UI๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์‹œ์ž‘ํ–ˆ์ง€๋งŒ, ์ƒํƒœ๊ณ„์˜ ๋ฐœ์ „๊ณผ ํ•จ๊ป˜ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด React๋ฅผ ์ด์šฉํ•ด ํ”„๋ ˆ์ž„์›Œํฌ์ฒ˜๋Ÿผ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 

 

์ด์ œ ์ง€๊ธˆ๊นŒ์ง€์˜ ๋‚ด์šฉ์„ ํ† ๋Œ€๋กœ ์‹ค์ œ ๊ฐœ๋ฐœ๊ณผ์ •์„ ์˜ˆ์‹œ๋กœ ๋“ค์–ด ๋‹ค์‹œ ํ•œ๋ฒˆ ์ •๋ฆฌํ•ด ๋ณด๋„๋ก ํ• ๊ฒŒ์š”!

 

์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ๋ ๊นŒ?

 

ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ, ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์‚ฌ์šฉ ๋ฐฉ์‹๊ณผ ๋ชฉ์ ์„ ๋ช…ํ™•ํžˆ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

React๋ฅผ ํ”„๋ ˆ์ž„์›Œํฌ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ๋•Œ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ๋•Œ์˜ ์ฐจ์ด๋ฅผ ์ดํ•ดํ•˜๋ฉด ๋” ๋‚˜์€ ์„ ํƒ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

React๋ฅผ ํ”„๋ ˆ์ž„์›Œํฌ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ๋•Œ

์ปค๋ฎค๋‹ˆํ‹ฐ์™€ ์ƒํƒœ๊ณ„์˜ ์˜ํ–ฅ๋ ฅ

  • ๋ฆฌ์•กํŠธ๋Š” ์ดˆ๊ธฐ ์„ค์ •๊ณผ ๊ตฌ์กฐ๊ฐ€ ์ด๋ฏธ ์žกํ˜€์žˆ๋Š” ์ƒํƒœ์—์„œ ์‹œ์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์€ ์ด๋ฅผ ํ”„๋ ˆ์ž„์›Œํฌ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, npm create-react-app์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด ์ •ํ•ด์ง„ ๊ตฌ์กฐ ์•ˆ์—์„œ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ปดํฌ๋„ŒํŠธ ๋‚ด์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ

  • ๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ปดํฌ๋„ŒํŠธ์— ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง, API ํ˜ธ์ถœ ๋“ฑ์„ ๋ชจ๋‘ ํฌํ•จ์‹œํ‚ต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์€ ๋ฆฌ์•กํŠธ๊ฐ€ ์ฝ”๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋™์ž‘ํ•˜๊ฒŒ ํ•˜์—ฌ ํ”„๋ ˆ์ž„์›Œํฌ์ฒ˜๋Ÿผ ๋А๊ปด์ง€๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ฆ‰, React ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ชจ๋“  ์‹คํ–‰ ํ๋ฆ„์„ ์ œ์–ดํ•˜๋ฉฐ, ๊ฐ•ํ•œ ๊ฒฐํ•ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์žฅ์ :

  • ๋น ๋ฅธ ๊ฐœ๋ฐœ ์†๋„: ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์— ํ†ตํ•ฉํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ ๊ตฌ์กฐ๊ฐ€ ๋ช…ํ™•ํ•˜๊ณ  ์ผ๊ด€์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์ :

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

 

React๋ฅผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ๋•Œ

๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ UI ๋ Œ๋”๋ง์„ ๋ถ„๋ฆฌํ•˜๊ณ , ์ด ๋‘˜์„ ์—ฐ๊ฒฐํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‘๋Š” ๋ฐฉ๋ฒ•

 

์ƒํƒœ ๊ด€๋ฆฌ์™€ UI ์—…๋ฐ์ดํŠธ

  • ๋ฆฌ์•กํŠธ์—์„œ setState๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด UI๊ฐ€ ๋ฆฌ๋ Œ๋”๋ง ๋ฉ๋‹ˆ๋‹ค. ์ด ์ ์„ ํ™œ์šฉํ•˜์—ฌ, setState๋ฅผ UI๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ์š”์†Œ๋กœ ๊ฐ„์ฃผํ•˜๊ณ , UI ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•œ ์‹œ์ ์—๋งŒ setState๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋Ÿฐ์‹์œผ๋กœ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์€ ๋ฆฌ์•กํŠธ์™€ ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฆฌ์•กํŠธ๋Š” ์˜ค๋กœ์ง€ UI๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ์—ญํ• ๋งŒ ํ•˜๊ฒŒ ๋˜๋ฉฐ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๋ถ„๋ฆฌ

  • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์€ ํ“จ์–ดํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑํ•˜์—ฌ ๋ฆฌ์•กํŠธ์™€ ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋ฅผ ํ†ตํ•ด ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์€ UI์™€ ๋ณ„๊ฐœ๋กœ ์ž‘๋™ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

UI ๋ Œ๋”๋ง์—๋งŒ ์ง‘์ค‘

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

์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•œ ํ†ต์‹ 

  • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ํ†ต์‹ (์—ฐ๊ฒฐ)์„ ๋‹ด๋‹นํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์„ค๊ณ„ํ•˜์—ฌ, ์ƒํƒœ ๋ณ€๊ฒฝ์„ ๋ฆฌ์•กํŠธ์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  • ์ด ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์˜ ์ƒํƒœ ๋ณ€๊ฒฝ์„ ๊ฐ์ง€ํ•˜๊ณ , ํ•„์š”ํ•œ ์‹œ์ ์— ๋ฆฌ์•กํŠธ์˜ setState๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ UI๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•œ ๊ตฌํ˜„ ์˜ˆ์‹œ

/**
* ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง - ์ˆœ์ˆ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํด๋ž˜์Šค
*/
class BusinessLogic {
  constructor() {
    this.data = null;
    this.listeners = [];
  }

  setData(newData) {
    this.data = newData;
    this.notifyListeners();
  }

  getData() {
    return this.data;
  }

  addListener(listener) {
    this.listeners.push(listener);
  }

  notifyListeners() {
    this.listeners.forEach(listener => listener(this.data));
  }
}

/**
* ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ - UI ๋ Œ๋”๋ง
*/
import React, { useState, useEffect } from 'react';

const TestComp = ({ businessLogic }) => {
  const [data, setData] = useState(businessLogic.getData());

  useEffect(() => {
    const handleDataChange = (newData) => {
      setData(newData);
    };

    businessLogic.addListener(handleDataChange);

    return () => {
      businessLogic.removeListener(handleDataChange);
    };
  }, [businessLogic]);

  return (
    <div>
      <h1>{data}</h1>
    </div>
  );
};

/**
* ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ ์‚ฌ์šฉ
*/
const logic = new BusinessLogic();
logic.setData("์ปคํ”ผ ๋งˆ์‹œ๊ณ ์‹ถ๋‹ค..");

const App = () => (
  <TestComp businessLogic={logic} />
);

export default App;

 

์žฅ์ 

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

๋‹จ์ 

  • ์‹ค์ œ ์‚ฌ๋ก€ ๋“œ๋ฌพ: ๋งŽ์€ ํšŒ์‚ฌ๋“ค์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ฒ˜๋Ÿผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹์„ ์ฑ„ํƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐœ๋ฐœ ๋น„์šฉ๊ณผ ์‹œ๊ฐ„์ด ๋งŽ์ด ๋“ค๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • ๋†’์€ ๊ฐœ๋ฐœ ๋น„์šฉ: ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ UI๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ๋ชจ๋“  ๊ฒƒ์„ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ด€๋ฆฌํ•˜๋ฉด ๊ฐœ๋ฐœ ๋น„์šฉ์ด ๋งŽ์ด ๋“ญ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ดˆ๊ธฐ ๋Ÿฐ์นญ์ด ์–ด๋ ค์›Œ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์•„๋ž˜์—์„œ ์ข€ ๋” ์ƒ์„ธํžˆ ์ €์˜ ์ƒ๊ฐ์„ ํ’€์–ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค.

์œ„์™€ ์ค‘๋ณต๋˜๋Š” ๋‚ด์šฉ์ด ์žˆ์ง€๋งŒ ํ๋ฆ„์„ ์œ„ํ•ด ๊ทธ๋Œ€๋กœ ์ ์–ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

 

๊ธฐ์ˆ  ๋ถ€์ฑ„์™€ ๊ทธ ๊ด€๋ฆฌ

์ €๋Š” ๊ธฐ์ˆ  ๋ถ€์ฑ„์— ๋Œ€ํ•ด ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ๋‹จ๊ธฐ์ ์ธ ์ด์ต์„ ์œ„ํ•ด ์žฅ๊ธฐ์ ์ธ ์œ ์ง€๋ณด์ˆ˜ ๋น„์šฉ์„ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ์„ ํƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด ๊ธฐ์ˆ  ๋ถ€์ฑ„์˜ ๊ฐœ๋…์€ "React.js์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐฉ์‹์˜ ๊ฒฐ์ •"์— ๋„์›€์„ ์ค„ ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•ด์š”!

 

๊ทธ๋ž˜์„œ ์ง€๊ธˆ๋ถ€ํ„ฐ React๋ฅผ ํ”„๋ ˆ์ž„์›Œํฌ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ๋•Œ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ๋•Œ์˜ ๊ธฐ์ˆ  ๋ถ€์ฑ„๋ฅผ ๋น„๊ตํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ”„๋ ˆ์ž„์›Œํฌ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ๋•Œ์˜ ๊ธฐ์ˆ  ๋ถ€์ฑ„

  • ๊ฐ•ํ•œ ๊ฒฐํ•ฉ์œผ๋กœ ์ธํ•ด ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ „ํ™˜์ด ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค.
  • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด React ์ปดํฌ๋„ŒํŠธ์— ๊นŠ์ด ๊ฒฐํ•ฉ๋˜์–ด ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ๋•Œ์˜ ๊ธฐ์ˆ  ๋ถ€์ฑ„

  • ์ดˆ๊ธฐ ๊ฐœ๋ฐœ ๋น„์šฉ์ด ๋†’์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ ๊ธฐ๋Šฅ์ด ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์–ด ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ๋А๋ ค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์ˆ  ๋ถ€์ฑ„ ๊ด€๋ฆฌ์˜ ์ค‘์š”์„ฑ

๊ธฐ์ˆ  ๋ถ€์ฑ„๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ์˜ ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ์ผ์ •์— ๋งž๊ฒŒ ๊ธฐ์ˆ  ๋ถ€์ฑ„๋ฅผ ์ž˜ ์กฐ์ •ํ•˜๋ฉด, ์žฅ๊ธฐ์ ์œผ๋กœ ๋” ๋‚˜์€ ์œ ์ง€๋ณด์ˆ˜์™€ ํ™•์žฅ์„ฑ์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋ฌด์—‡๋ณด๋‹ค ์ €๋Š” ๊ธฐ์ˆ  ๋ถ€์ฑ„๊ฐ€ ์ƒ๊ฒจ๋„ ์ฒญ์‚ฐ๋งŒ ์ž˜ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๊ธฐ์ˆ  ๋ถ€์ฑ„๋ฅผ ์ž˜ ๋‚ด๋Š” ๊ฒƒ๋„ ์ €๋Š” ์ค‘์š”ํ•œ ๋Šฅ๋ ฅ์ด๋ผ๊ณ  ๋ณด๊ณ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๊ฐ€ ์ด์œ ์ฝ”๋“œ๋งŒ ์ž‘์„ฑํ•˜๋Š” ์˜ˆ์ˆ ๊ฐ€๋Š” ์•„๋‹ˆ๋‹ˆ๊นŒ์š”.

๊ทธ๋Ÿฌ๋‹ˆ ๋ฌด์–ธ๊ฐ€๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋‹จ์ˆœํ•˜๊ฒŒ ์ •์˜๋œ ํŠน์ • ๋‹จ์–ด๋‚˜ ๋ฌธ์žฅ๋งŒ์„ ๋ฐ›์•„๋“ค์ด๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ์ƒ๋Œ€์ ์œผ๋กœ ์ƒ๊ฐํ•˜๋Š” ์Šต๊ด€์„ ๋“ค์ผ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋น ๋ฅธ ์„ฑ์žฅ์— ์œ ๋ฆฌํ•˜์ง€ ์•Š์„๊นŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

 


๊ฒฐ๋ก 

React๋Š” ๊ณต์‹์ ์œผ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด์ง€๋งŒ, ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ํ”„๋ ˆ์ž„์›Œํฌ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ์˜ ํŠน์„ฑ๊ณผ ์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ React๋ฅผ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์ˆ  ๋ถ€์ฑ„๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉด์„œ, ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ฐจ์ด๋ฅผ ์ดํ•ดํ•˜๊ณ  ์ ์ ˆํ•˜๊ฒŒ ํ™œ์šฉํ•˜๋ฉด ์„ฑ๊ณต์ ์ธ ๊ฐœ๋ฐœ์„ ์ด๋ฃฐ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ๋Œ€์ ์œผ๋กœ ์‚ฌ๊ณ ํ•˜๊ณ , ์ƒํ™ฉ์— ๋งž๋Š” ์ตœ์„ ์˜ ์„ ํƒ์„ ํ•˜๋Š” ์Šต๊ด€์„ ๊ธฐ๋ฅด๋ฉด ๋”์šฑ ๋น ๋ฅด๊ฒŒ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค!

 

์—ฌ๋Ÿฌ๋ถ„๋“ค๊ป˜์„œ ์ด ๊ธ€์„ ์ฝ๊ณ  ๋‚œ ํ›„์—๋„, ๊ณ„์† ํ•™์Šตํ•˜๋ฉฐ ๋‹ค์–‘ํ•œ ์˜๊ฒฌ์„ ์ ‘ํ•˜๊ฒŒ ๋˜์‹œ๊ฒ ์ฃ ?!

์ž์‹ ๋“ค๋งŒ์˜ ๋‹จ์–ด๋กœ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๊ณ , ๊ฐœ๋ฐœ ๋ฐฉํ–ฅ์— ๋Œ€ํ•œ ๊ธธ์žก์ด ์—ญํ• ์— ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ผ๋ฉฐ ์ด๋งŒ ๋งˆ์น˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

'CS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Chrome ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง - Critical Path ์ด์ „ ๊ณผ์ •์€?  (0) 2024.03.20

+ Recent posts