Redux๋ž€โ“

์ฝ”๋ฆฐ์ดยท2022๋…„ 6์›” 9์ผ
0

๐Ÿ‘€Redux๋ž€?

์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ณต์žก์„ฑ์„ ๋‚ฎ์ถ”์–ด ์ฝ”๋“œ์˜ ๊ฒฐ๊ณผ๋ฅผ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ๋„๊ตฌ

์™œ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?

๋ฆฌ๋•์Šค ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€ ์ฐธ์กฐ

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

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

๋ฆฌ๋•์Šค ํ™ˆํŽ˜์ด์ง€์— ๋‚˜์™€์žˆ์–ด์š”!

  • ์•ฑ ์ƒํƒœ๊ฐ€ ์ž์ฃผ ์—…๋ฐ์ดํŠธ ๋ ๋•Œ
  • ์•ฑ์˜ ์—ฌ๋Ÿฌ ์œ„์น˜์— ํ•„์š”ํ•œ ๋งŽ์€ ์–‘์˜ ์ƒํƒœ๊ฐ€ ์žˆ์„ ๋•Œ
  • ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ๋กœ์ง์ด ๋ณต์žกํ•  ๋•Œ
  • ์ƒํƒœ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜๋Š” ์‹œ์ ์„ ๊ด€์ฐฐํ•  ํ•„์š”๊ฐ€ ์žˆ์„ ๋•Œ
  • ์•ฑ์ด ์ค‘ํ˜• ๋˜๋Š” ๋Œ€ํ˜• ์ฝ”๋“œ๊ฐ€ ์žˆ๊ณ , ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ž‘์—…์„ ํ• ๋•Œ

โ— Redux์˜ 3๊ฐ€์ง€ ์›์น™

1. Single source of truth

Redux ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์Šคํ† ์–ด๋ฅผ ๋งŒ๋“ค์–ด ๊ทธ ํ•œ๊ณณ์—์„œ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌ, ์ฆ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘์•™ ์ง‘์ค‘์ ์œผ๋กœ ๊ด€๋ฆฌ

2. State is read-only

์ƒํƒœ๋Š” ์ฝ๊ธฐ ์ „์šฉ์ด๋‹ค.
์™ธ๋ถ€์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘์ ์œผ๋กœ ์ œ์–ดํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋ง‰์Œ์œผ๋กœ์จ ์˜๋„ํ•˜์ง€ ์•Š๊ฒŒ ์ƒํƒœ๊ฐ€ ๋ฐ”๋€Œ๋Š”๊ฒƒ์„ ์ฐจ๋‹จํ•œ๋‹ค.

3. changes are made with pure functions

๋ณ€ํ™”๋ฅผ ์ผ์œผํ‚ค๋Š” ํ•จ์ˆ˜, ๋ฆฌ๋“€์„œ๋Š” ์ˆœ์ˆ˜ํ•œ ํ•จ์ˆ˜์—ฌ์•ผ ํ•œ๋‹ค.
๋ฆฌ๋“€์„œ๋Š” ์ด์ „์ƒํƒœ์˜ ์•ก์…˜์„ ๋ฐ›์•„ ๋‹ค์Œ ์ƒํƒœ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ˆœ์ˆ˜ํ•จ์ˆ˜๋กœ, ์ด์ „ ์ƒํƒœ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์ƒˆ๋กœ์šด ์ƒํƒœ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

Redux์˜ ์žฅ์ 

UNDO, REDO๊ฐ€ ๋„ˆ๋ฌด ์‰ฝ๊ฒŒ ๊ฐ€๋Šฅํ•จ
๋””๋ฒ„๊ฑฐ์˜ ํ†ตํ•ด ํ˜„์žฌ์ƒํƒœ๋ฅผ ๋ณผ์ˆ˜ ์ž‡์ฐŒ๋งŒ ๋ฆฌ๋•์Šค๋Š” ํ˜„์žฌ ์ƒํƒœ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ณผ๊ฑฐ ์ƒํƒœ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.(๋ฌธ์ œํ•ด๊ฒฐ์„ ์‰ฝ๊ฒŒํ•˜๋„๋ก ๋„์™€์คŒ)
๋ชจ๋“ˆ ๋ฆฌ๋กœ๋”ฉ ๊ฐ€๋Šฅ ( ์ž๋™์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋ฐ˜์˜ )
๋ฆฌ๋•์Šค๋ฅผ ์“ฐ๋ฉด ์ข‹์€ ์ด์œ 
๋ฆฌ๋•์Šค๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์žฅ์ 
: ์‹œ๊ฐ„ ์—ฌํ–‰์„ ํ•  ์ˆ˜ ์žˆ๋”ฐ

๐Ÿ’ก Redux Flow

์ถœ์ฒ˜

๐Ÿ“ข Redux ๊ธฐ๋ณธ ์šฉ์–ด

1. store

์ •๋ณด๊ฐ€ ์ €์žฅ๋˜๋Š” ์žฅ์†Œ๋กœ ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ์—๋Š” ํ•˜๋‚˜์˜ ์Šคํ† ์–ด๋งŒ ์กด์žฌํ•œ๋‹ค.

  • ํ˜„์žฌ์˜ ์ƒํƒœ / ๋ฆฌ๋“€์„œ / ๋‚ด์žฅํ•จ์ˆ˜๋ฅผ ํฌํ•จ

2. state

  • ์‹ค์ œ ์ •๋ณด

3. reducer

๋ณ€ํ™”๋ฅผ ์ผ์œผํ‚ค๋Š” ํ•จ์ˆ˜๋กœ ๋‘๊ฐ€์ง€์˜ ํŒŒ๋ผ๋ฏธํ„ฐ(ํ˜„์žฌ์˜ ์ƒํƒœ, ์ „๋‹ฌ ๋ฐ›์€ ์•ก์…˜)๋ฅผ ๋ฐ›์•„์˜จ๋‹ค.
๋‘ ๊ฐ€์ง€์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ์ƒˆ๋กœ์šด ์ƒํƒœ๋ฅผ ๋ฐ˜ํ™˜

  • useReducer์™€ ๊ฐ™์€ ํ˜•ํƒœ
  • state๋ฅผ ๊ฐฑ์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ํ•จ์ˆ˜.

4. render

  • store ๋ฐ–์—์žˆ์Œ
  • ui์„ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋‚ด๊ฐ€ ๋งŒ๋“œ๋Š” ์ฝ”๋“œ
  • state๊ฐ’์„ ์ฐธ์กฐํ•ด์„œ ui๋ฅผ ๋งŒ๋“œ๋Š” ์ฝ”๋“œ

5. dispatch

์Šคํ† ์–ด์˜ ๋‚ด์žฅํ•จ์ˆ˜๋กœ action์„ ๋ฐœ์ƒ์‹œํ‚ด.

  • dispatch๋ผ๋Š” ํ•จ์ˆ˜๋Š” action์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ
  • ์ฆ‰ Reducer ํ•จ์ˆ˜์—๊ฒŒ Action์„ ์†ก์‹ 

6. subscribe

state๊ฐ’์ด ๋ฐ”๋€”๋•Œ ๋งˆ๋‹ค render ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐ ui ๊ฐฑ์‹ 

  • React์—์„œ Redux๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ณดํ†ต ์ด ํ•จ์ˆ˜๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ์ผ์€ ์—†๋‹ค.
  • ๋Œ€์‹  useSelector Hook์„ ์‚ฌ์šฉํ•˜์—ฌ Redux Store์˜ ์ƒํƒœ์— ๊ตฌ๋…ํ•œ๋‹ค.

7. getState

  • state ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ธฐ

8. action

์ƒํƒœ ๋ณ€ํ™”๋ฅผ ์ผ์œผํ‚ฌ ๋•Œ ์ฐธ์กฐํ•˜๋Š” ๊ฐ์ฒด๋กœ, ์ƒํƒœ์— ๋ณ€ํ™”๊ฐ€ ํ•„์š”ํ•  ๋•Œ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.

  • ์ด๋ฒคํŠธ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.
  • ์•ก์…˜ ๊ฐ์ฒด๋Š” type ํ•„๋“œ๋ฅผ ๋ฐ˜๋“œ์‹œ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•จ.
  • ๊ทธ ์™ธ ์†์„ฑ๊ฐ’์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งˆ์Œ๋Œ€๋กœ ์ถ”๊ฐ€

์ฐธ์กฐ์‚ฌ์ดํŠธ
Redux ์ •๋ฆฌ
6์žฅ.๋ฆฌ๋•์Šค
Redux๋ž€
์ƒํ™œ์ฝ”๋”ฉ

profile
์ดˆ๋ณด ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€