๋ฐ˜์‘ํ˜•

TL;DR


  1. ์ •์˜
    • ๋ถ€์ˆ˜ ํšจ๊ณผ๋ฅผ ์ถ”์ƒํ™”ํ•˜๋Š” ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜
    • ๋ถ€์ˆ˜ ํšจ๊ณผ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์—ฐ์‚ฐ(Effect)๊ณผ ๊ทธ ์—ฐ์‚ฐ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•ธ๋“ค๋Ÿฌ(Effect Handler)๋กœ ๊ตฌ์„ฑ
  2. ์ฝ”๋“œ ๊ด€๋ฆฌ ๋ฐฉ์‹
    • ์ฝ”๋“œ ์กฐ๊ฐ์„ ๊ฐ์‹ธ๋Š” ๋งฅ๋ฝ(context)์œผ๋กœ ์ฑ…์ž„ ๋ถ„๋ฆฌ
    • ํŠน์ • ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฐ์‹ธ๋Š” ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์—๊ฒŒ ์—ญํ•  ์œ„์ž„
  3. React์—์„œ ๋Œ€์ˆ˜์  ํšจ๊ณผ — Suspense, ErrorBoundary
    • ๋กœ๋”ฉ UI, ์—๋Ÿฌ ํ‘œ์‹œ ์—ญํ• ์„ ํŠน์ • ์ปดํฌ๋„ŒํŠธ๋กœ ๊ฐ์‹ธ๋Š” ํ˜•ํƒœ๋กœ ๋ถ„๋ฆฌ
    • ์ž์‹ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฐœ์ƒํ•œ ๋ถ€์ˆ˜ ํšจ๊ณผ๋ฅผ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์—์„œ ์บ์น˜ํ•˜๊ณ  ์ฒ˜๋ฆฌ
  4. ๋Œ€์ˆ˜์  ํšจ๊ณผ์˜ ์žฅ์ 
    • ์ˆœ์ˆ˜ํ•˜์ง€ ์•Š์€ ๋™์ž‘์— ๋Œ€ํ•œ ์ฑ…์ž„ ๋ถ„๋ฆฌ
    • ์„ ์–ธ์ (declarative) ์ฝ”๋“œ ์ž‘์„ฑ ๊ฐ€๋Šฅ
    • What๊ณผ How๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ

 

๋Œ€์ˆ˜์  ํšจ๊ณผ๋ž€?


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

 

React์—์„  Suspense์™€ ErrorBoundary๋ฅผ ์ด์šฉํ•ด ๋กœ๋”ฉ UI์™€ ์—๋Ÿฌ ํ‘œ์‹œ ์—ญํ• ์„ ํŠน์ • ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฐ์‹ธ๋Š” ํ˜•ํƒœ๋กœ ๋ถ„๋ฆฌํ•œ๋‹ค. ์ด ๊ฒฝ์šฐ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฐœ์ƒํ•œ ๋ถ€์ˆ˜ ํšจ๊ณผ๋ฅผ ์บ์น˜ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

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

 

์˜ˆ๋ฅผ๋“ค์–ด React์—์„œ Suspense์™€ ErrorBoundary๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ์ž์‹ ์ปดํฌ๋„ŒํŠธ๊ฐ€ Promise๋ฅผ ๋˜์ง€๊ฑฐ๋‚˜(throw Promise) ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋ฉด, ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์ธ Suspense๋‚˜ ErrorBoundary๊ฐ€ ์ด๋ฅผ ์บ์น˜ํ•˜์—ฌ ์ฒ˜๋ฆฌํ•œ๋‹ค. ๊ทธ ํ›„ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ๋ฆ„์„ ์ž์‹ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฉˆ์ท„๋˜ ๊ณณ์œผ๋กœ ๋˜๋Œ๋ฆฐ๋‹ค.

 

์ด์ฒ˜๋Ÿผ ๋Œ€์ˆ˜์  ํšจ๊ณผ๋Š” ์ฝ”๋“œ ์กฐ๊ฐ์„ ๊ฐ์‹ธ๋Š” ๋งฅ๋ฝ์„ ํ†ตํ•ด ์ˆœ์ˆ˜ํ•˜์ง€ ์•Š์€ ๋™์ž‘์— ๋Œ€ํ•œ ์ฑ…์ž„์„ ๋ถ„๋ฆฌํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์ฑ…์ž„ ๋ถ„๋ฆฌ ๋ฐฉ์‹์€ ์„ ์–ธ์ (declarative)์ธ ์ฝ”๋“œ ์ž‘์„ฑ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋ฉฐ, React๊ฐ€ ์ง€ํ–ฅํ•˜๋Š” ์ ๊ณผ ์ผ์น˜ํ•œ๋‹ค. What(๋ฌด์—‡์„ ํ• ์ง€)๊ณผ How(์–ด๋–ป๊ฒŒ ํ• ์ง€)๋ฅผ ๋ถ„๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ํšจ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.

 

์ฐธ๊ณ  ๊ธ€


 


๊ธ€ ์ˆ˜์ •์‚ฌํ•ญ์€ ๋…ธ์…˜ ํŽ˜์ด์ง€์— ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”
๋ฐ˜์‘ํ˜•