๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๊ฐœ๋ฐœ

React + Redux(Redux-toolkit) + Redux-saga

ํ˜„์žฌ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ๋กœ React์™€ Redux, Redux-saga๋ฅผ ์ด์šฉํ•ด ๊ฐœ๋ฐœ ์ค‘์ด๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ๊ฐ ์–ด๋–ค ์ด์œ ๋กœ ์ด์šฉํ–ˆ๋Š”์ง€ ์ •๋ฆฌํ•˜๊ณ ์ž ๊ธ€์„ ์ ์–ด๋ณธ๋‹ค.

 

 

#. React

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

#. Redux / Redux-toolkit

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

 

#. Redux-saga 

ํ˜„์žฌ ๊ฐœ๋ฐœ ์ค‘์ธ ํ”„๋กœ์ ํŠธ๋Š” ์™ธ๋ถ€ API๋ฅผ ํ†ตํ•ด ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ DB์— ์ €์žฅํ•˜์—ฌ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ๋ณด์—ฌ์ฃผ๋Š” ๊ตฌ์กฐ์ด๋‹ค. ๊ทธ๋ž˜์„œ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋น„๋™๊ธฐ ์ž‘์—…์ด ๋นˆ๋ฒˆํ•˜๊ฒŒ ์ผ์–ด๋‚˜ ์ด๋Ÿฌํ•œ ๋ถ€์ˆ˜์ ์ธ ์ž‘์—…์„ ๋”ฐ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌ๋•์Šค ์‚ฌ๊ฐ€๋ฅผ ์ด์šฉํ•˜์˜€๋‹ค. ๋ฆฌ๋•์Šค ์‚ฌ๊ฐ€๋Š” ๋ฆฌ๋•์Šค์˜ action์ด ๋ฐœ์ƒํ•˜๋ฉด reducer๊ฐ€ ์•ก์…˜์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์ „์— ์—ฌ๋Ÿฌ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฏธ๋“ค์›จ์–ด ์—ญํ• ์„ ํ•ด์ค€๋‹ค.