๐Ÿ“

0. Redux๋ž€?

ย 

Redux๋ž€?

๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์—์„œ ์„ค๋ช…ํ•˜๊ณ  ์žˆ๋Š” ๋ฆฌ์—‘ํŠธ์˜ ์ •์˜๋ฅผ ํ•œ ๋ฒˆ ๋ณด๋„๋ก ํ•ฉ์‹œ๋‹ค. google์—์„œ๋„ react redux๋ผ๋Š” ํ‚ค์›Œ๋“œ๋กœ ํ•œ ๋ฒˆ ๊ฒ€์ƒ‰ ํ›„ ์ด๋ฏธ์ง€๋ฅผ ์‚ดํŽด๋ด์ฃผ์„ธ์š”.
ย 
๋ฆฌ๋•์Šค๋Š” ๋ฆฌ์—‘ํŠธ๋งŒ์„ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. Vue์™€๋„ ์ž˜ ๊ฒฐํ•ฉ๋˜๋ฉฐ, React, ๋˜๋Š” ์ˆœ์ˆ˜ JS์™€๋„ ๊ฒฐํ•ฉ์ด ๋ฉ๋‹ˆ๋‹ค. ์„ค์น˜์—†์ด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ™œ์ฝ”๋”ฉ์˜ ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด Redux์˜ ์†์„ฑ์„ ์•Œ์•„๋ด…์‹œ๋‹ค.
ย 
ย 
ย 
์šฐ๋ฆฌ๊ฐ€ ์•ž์—์„œ ๋ฐฐ์šด ๋ฆฌ์•กํŠธ์—์„œ, ํด๋ฆญ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ํ•ด๋‹น ๊ฐ’๋“ค์€ Hook์„ ์‚ฌ์šฉํ•ด์„œ ๊ฐ’์˜ ์ƒํƒœ๋ฅผ ๋ฐ”๊ฟ”์ค€ ํ›„ ํ™”๋ฉด์— ์žฌ๋ Œ๋”๋งํ•˜์—ฌ์„œ ๊ฐ’๋“ค์„ ๋ณด์—ฌ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰ useState๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์•กํŠธ์—๊ฒŒ ๊ฐ’์˜ ๋ณ€๊ฒฝ์„ ์•Œ๋ฆฌ๋ฉด, ๋ฆฌ์•กํŠธ๊ฐ€ UI๋ฅผ ์—…๋ฐ์ดํŠธ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
๋ฆฌ๋•์Šค์—์„œ๋„ useState์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๋ณ€ํ•˜๋Š” ๊ฐ’๋“ค์„ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ๊ด€๋ฆฌ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ์ „์—ญ์œผ๋กœ ๋˜๋Š” ๊ต์ฐจ ์ปดํฌ๋„ŒํŠธ๋“ค์˜ ๋ฐ์ดํ„ฐ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋“ค์˜ ๊ฐ’์ด ๋ฐ”๋€Œ์—ˆ์„ ๋•Œ ๊ทธ ๊ฐ’๋“ค์„ ์ปดํฌ๋„ŒํŠธ๋“ค์—๊ฒŒ ์ „๋‹ฌํ•ด์ฃผ๊ณ  ๊ทธ ๊ฐ’๋“ค์„ ๋‹ค์‹œ ํ™”๋ฉด์— ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
ย 
์šฐ์„  ์•„๋ž˜ ๋‚ด์šฉ์„ ์„ค๋ช…ํ•˜๊ธฐ ์ „ ๋ฆฌ๋•์Šค ๋ฐ๋ธŒํˆด์Šค๋ฅผ ์„ค์น˜ํ•ด์ฃผ์„ธ์š”.
ย 

ย 
์ •๋ฆฌ
  • React๋Š” OOO OOOOO๋ฅผ ์œ„ํ•œ JS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • Redux๋Š” ๋ฐ์ดํ„ฐ๋ฅผ OOOO ๊ด€๋ฆฌํ•จ์œผ๋กœ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•จ
  • ๊ณตํ†ต์  : ๋ณต์žกํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ๋ณต์žก๋„๋ฅผ ๋‚ฎ์ถฐ์คŒ

Redux ํ”Œ๋กœ์šฐ

  1. ํ•˜๋‚˜์˜ ์ค‘์•™ ๋ฐ์ดํ„ฐ store๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค.(๋ฐ์ดํ„ฐ๋Š” state(์ƒํƒœ)๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค)
  1. ์ƒํƒœ๊ฐ’์„ ๋ฐ”๋€” ๋•Œ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ๋“ค์˜ state ๊ฐ’์„ ์ˆ˜์ •ํ•ด์ค„ reducer ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  1. dispatch๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ reducer์—๊ฒŒ state ๊ฐ’์„ ์ˆ˜์ •ํ•˜๋ผ๊ณ (action ๊ฐ’์„ ์ „๋‹ฌ) ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
  1. reducer๊ฐ€ state๊ฐ’์„ ์ˆ˜์ •ํ•˜๋ฉด, subscribe๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜์ •๋œ ๋ถ€๋ถ„์„ UI์— ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
์œ„๋‹ˆ๋ธŒ์œ„๋‹ˆ๋ธŒ
์œ„๋‹ˆ๋ธŒ
์–ด๋ ต์ฃ ? ๊ทธ๋Ÿผ ์•„๋ž˜์™€ ๊ฐ™์ด ๋น„์œ ๋ฅผ ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
notion imagenotion image
๋‹ค์‹œ ํ•œ ๋ฒˆ ์ƒํ™œ ์ฝ”๋”ฉ ์˜ˆ์ œ๋กœ ๋Œ์•„๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋Š” ์–ด๋–ป๊ฒŒ ๋ณ€๊ฒฝ๋ ๊นŒ์š”?

React์—์„œ ์ƒํƒœ ๊ฐ’์„ ๋ฐ”๊ฟ€ ๋•Œ๋Š” useState๊ฐ€ ์ œ๊ณตํ•˜๋Š” setState๋ฅผ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์•ž์œผ๋กœ ์‚ฌ์šฉํ•  redux์—์„œ๋Š” state ์ž์ฒด์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ๋„ ์ง์ ‘ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ๋„ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹  Reducer ํ•จ์ˆ˜์—๊ฒŒ ์ˆ˜์ •์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
์œ„๋‹ˆ๋ธŒ์œ„๋‹ˆ๋ธŒ
์œ„๋‹ˆ๋ธŒ
const reducer = (state = 0, action) => { switch (action.type) { // action.type์ด "PLUS"๋ผ๋ฉด state ๊ฐ’์„ 1 ๋”ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. case "PLUS": return state - 1; case "MINUS": // action.type์ด "MINUS"๋ผ๋ฉด state ๊ฐ’์„ 1 ๋บผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. return state + 1; default: return state; // action.type์ด "PLUS, MINUS" ๋ชจ๋‘ ์•„๋‹ˆ๋ผ๋ฉด state ๊ฐ’์˜ ๋ณ€ํ™”๋Š” ์—†์Šต๋‹ˆ๋‹ค. } };
ย 

Redux๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

์ƒํƒœ ๊ฐ’์„ ์ „์—ญ์œผ๋กœ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” useContext๊ณผ์˜ ์ฐจ์ด์ ์ด ๋ฌด์—‡์ผ๊นŒ์š”? useContext๋„ ๋ถˆํ•„์š”ํ•œ props์ „๋‹ฌ์„ ๋ง‰๊ณ  ์ „์—ญ์œผ๋กœ ๊ฐ’๋“ค์„ ๊ด€๋ฆฌํ•ด์ฃผ๋Š”๋ฐ ๋ง์ด์ฃ .
react Context๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Context๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์—ฌ๋Ÿฌ๊ฐœ์˜ ์„ธํŒ…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Context๋ผ๋„ ํฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ๋ณต์žกํ•œ ์ƒํƒœ๊ด€๋ฆฌ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๊ฐ€ ํด์ˆ˜๋ก ๊ด€๋ฆฌํ•ด์•ผํ•  ๊ฐ’๋“ค์€ ๋งŽ์•„์ง€๊ณ  Provider๋ฅผ ๋” ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด์„œ provider์•ˆ์— provider๋กœ ๊นŠ์€ ์ค‘์ฒฉ๊ด€๊ณ„๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ๋ณ€์ˆ˜์˜ ์ˆ˜๊ฐ€ ์ปจํŠธ๋กค ๊ฐ€๋Šฅํ•œ ์ •๋„์˜ ๋ณต์žกํ•˜์ง€ ์•Š์€ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” React์— ๋‚ด์žฅ๋˜์–ด ์žˆ๋Š” Context๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ”„๋กœ์ ํŠธ์— ๊ต์œก ๋น„์šฉ๊ณผ ํšจ์šฉ์„ ์ž˜ ์ €์šธ์งˆ ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
<AuthContextProvider> <UIContextProvider> <UserForm/> </UIContextProvider> </AuthContextProvider>
ย 

Redux ์„ค์น˜ํ•˜๊ธฐ

npm i redux // javascript
npm i redux-react // React js
ย 
ย