๐Ÿ“ฆRedux๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

๋ฐœํ–‰: (2026๋…„ 2์›” 13์ผ ์˜ค์ „ 08:05 GMT+9)
5 ๋ถ„ ์†Œ์š”
์›๋ฌธ: Dev.to

Source: Dev.to

ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ, ํŠนํžˆ React๋ฅผ ๋ฐฐ์šฐ๊ณ  ์žˆ๋‹ค๋ฉด Redux์— ๋Œ€ํ•ด ๋“ค์–ด๋ดค์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ์—” ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ์ง€๋งŒ, ํ•ต์‹ฌ ์•„์ด๋””์–ด๋Š” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

Redux๋ž€?

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

ํ•ต์‹ฌ ๊ฐœ๋…

Store

์Šคํ† ์–ด๋Š” ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ๋ฅผ ๋ณด๊ด€ํ•ฉ๋‹ˆ๋‹ค.

// Example state
{
  count: 0
}

์Šคํ† ์–ด๋ฅผ ์ฐฝ๊ณ , ์€ํ–‰ ์‚ฌ๋ฌผํ•จ, ํ˜น์€ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ด์•„์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ฐ•์Šค๋กœ ์ƒ์ƒํ•ด ๋ณด์„ธ์š”.

Action

์•ก์…˜์€ ๋ฌด์—‡์ด ์ผ์–ด๋‚˜์•ผ ํ•˜๋Š”์ง€๋ฅผ ์„ค๋ช…ํ•˜๋Š” ์ˆœ์ˆ˜ JavaScript ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.

// Example action
{
  type: "INCREMENT"
}

์•ก์…˜์€ ๋ ˆ์Šคํ† ๋ž‘์—์„œ ์ฃผ๋ฌธ์„ ๋„ฃ๊ฑฐ๋‚˜, ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๊ฑฐ๋‚˜, ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ํ–‰์œ„์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Reducer

๋ฆฌ๋“€์„œ๋Š” ์•ก์…˜์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ์ƒํƒœ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณ€ํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์ˆœ์ˆ˜ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

function counterReducer(state = { count: 0 }, action) {
  if (action.type === "INCREMENT") {
    return { count: state.count + 1 };
  }
  return state;
}

๋ฆฌ๋“€์„œ๋Š” ์ฃผ๋ฌธ(์•ก์…˜)์„ ๋ฐ›๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค์–ด ๋‚ด๋Š” ์š”๋ฆฌ์‚ฌ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ํ๋ฆ„ ์˜ˆ์‹œ

๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์นด์šดํ„ฐ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ฌ ๋•Œ:

  1. ์‚ฌ์šฉ์ž๊ฐ€ ๋ฒ„ํŠผ ํด๋ฆญ ๐Ÿ–ฑ๏ธ
  2. ์•ก์…˜์ด ๋””์ŠคํŒจ์น˜๋จ ๐Ÿ“ข ({ type: "INCREMENT" })
  3. ๋ฆฌ๋“€์„œ๊ฐ€ ์•ก์…˜์„ ๋ฐ›์•„ ๐Ÿ” ์ƒˆ๋กœ์šด ์ƒํƒœ๋ฅผ ๋ฐ˜ํ™˜
  4. ์Šคํ† ์–ด๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธ ๐Ÿฌ
  5. UI๊ฐ€ ์ž๋™์œผ๋กœ ๋‹ค์‹œ ๋ Œ๋”๋ง ๐ŸŽ‰

์ด ์ผ๋ฐฉํ–ฅ ํ๋ฆ„ (action โ†’ reducer โ†’ store โ†’ UI) ์„ ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

Redux ์‚ฌ์šฉ์˜ ์žฅ์ 

  • โœ… ํฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ๋ฅผ ์ค‘์•™์—์„œ ๊ด€๋ฆฌ
  • โœ… ๋งŽ์€ ์ปดํฌ๋„ŒํŠธ์— ๊ฑธ์นœ prop drilling ๋ฐฉ์ง€
  • โœ… ์ƒํƒœ ๋ณ€ํ™”๋ฅผ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ณ  ์ถ”์  ๊ฐ€๋Šฅํ•˜๊ฒŒ ์œ ์ง€
  • โœ… Redux DevTools ๊ฐ™์€ ๋„๊ตฌ๋กœ ๋””๋ฒ„๊น… ๊ฐ„์†Œํ™”
  • โœ… ๊น”๋”ํ•˜๊ณ  ์กฐ์ง์ ์ธ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ์œ ์ง€

Redux๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๋•Œ

Redux๊ฐ€ ๋น›์„ ๋ฐœํ•˜๋Š” ๊ฒฝ์šฐ:

  • ๋งŽ์€ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๊ทœ๋ชจ๊ฐ€ ํฐ ์•ฑ
  • ์ƒํƒœ ๋กœ์ง์ด ๋ณต์žกํ•˜๊ฑฐ๋‚˜ ์ƒํ˜ธ์ž‘์šฉ์ด ๋งŽ์€ ๊ฒฝ์šฐ
  • ์ƒํƒœ ๋ณ€ํ™”๋ฅผ ์‹ ๋ขฐ์„ฑ ์žˆ๊ฒŒ ์ถ”์ ยท๋””๋ฒ„๊น…ํ•ด์•ผ ํ•  ๋•Œ

์•„์ฃผ ์ž‘์€ ์•ฑ์—์„œ๋Š” Redux๊ฐ€ ๋ถˆํ•„์š”ํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Redux Toolkit

Redux Toolkit์€ Redux ๋กœ์ง์„ ์ž‘์„ฑํ•˜๋Š” ํ˜„๋Œ€์ ์ด๊ณ  ๊ถŒ์žฅ๋˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. Toolkit์€ Redux๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค:

  • ์„ค์ •์ด ๋” ์‰ฌ์›€ ๐Ÿ˜Š
  • ์ฝ”๋“œ๊ฐ€ ๋” ๊น”๋”ํ•˜๊ณ  ๊ฐ„๊ฒฐํ•จ โœจ
  • ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ ์ฝ”๋“œ ๊ฐ์†Œ ๐Ÿงน

Toolkit์„ ์‚ฌ์šฉํ•˜๋ฉด ์Šฌ๋ผ์ด์Šค, ๋ฆฌ๋“€์„œ, ๋น„๋™๊ธฐ thunk ๋“ฑ์„ ํ›จ์”ฌ ์ ์€ ์ฝ”๋“œ ๋ผ์ธ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์š”์•ฝ

  • ๐Ÿง  Store = ์ค‘์•™ ๋ฐ์ดํ„ฐ ์ปจํ…Œ์ด๋„ˆ
  • ๐Ÿ“ข Action = ๋ฌด์—‡์ด ์ผ์–ด๋‚˜์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์„ค๋ช…
  • ๐Ÿ” Reducer = ์ƒˆ๋กœ์šด ์ƒํƒœ๋ฅผ ๋งŒ๋“ค์–ด ๋‚ด๋Š” ๋กœ์ง
  • ๐Ÿฌ Redux = ๋ชจ๋“  ๊ฒƒ์„ ์—ฐ๊ฒฐํ•ด ์ฃผ๋Š” ์ „์ฒด ๊ด€๋ฆฌ ์‹œ์Šคํ…œ

์นด์šดํ„ฐ๋‚˜ todo ์•ฑ ๊ฐ™์€ ์ž‘์€ ์˜ˆ์ œ๋กœ ์‹œ์ž‘ํ•ด ํ๋ฆ„์„ ์—ฐ์Šตํ•˜๋ฉด, ๊ธˆ๋ฐฉ Redux์— ์ต์ˆ™ํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋ฅผ ๊ณ„์† ๋งŒ๋“ค๋ฉด์„œ ๊ฒฝํ—˜์„ ์Œ“๋‹ค ๋ณด๋ฉด Redux๊ฐ€ React ํˆดํ‚ท์˜ ์ž์—ฐ์Šค๋Ÿฌ์šด ์ผ๋ถ€๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๐Ÿš€

0 ์กฐํšŒ
Back to Blog

๊ด€๋ จ ๊ธ€

๋” ๋ณด๊ธฐ ยป

๋Œ€๋ถ€๋ถ„์˜ React ๊ฐœ๋ฐœ์ž๋Š” useEffect์— ๋Œ€ํ•ด ์ด๊ฒƒ์„ ์ž˜๋ชป ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค

!ํ‘œ์ง€ ์ด๋ฏธ์ง€: ๋Œ€๋‹ค์ˆ˜ React ๊ฐœ๋ฐœ์ž๋“ค์ด useEffect์— ๋Œ€ํ•ด ์ž˜๋ชป ์ดํ•ดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=aut...

์›Œ๋“œํ”„๋ ˆ์Šค ํ…Œ๋งˆ๊ฐ€ ์˜ˆ์œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์™€ ๋‹ค๋ฅด๊ฒŒ ๋ณด์ด๋Š” ์ด์œ  (๊ทธ๋ฆฌ๊ณ  ์‰ฝ๊ฒŒ ์›ํ•˜๋Š” ๋ชจ์Šต์„ ๊ฐ–๋Š” ๋ฐฉ๋ฒ•)

๋งŒ์•ฝ ์›Œ๋“œํ”„๋ ˆ์Šค ํ…Œ๋งˆ๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๋ฐ”๋กœ โ€œ์™œ ์ด๊ฒŒ ์˜ˆ์‹œ์™€ ์ „ํ˜€ ๋‹ค๋ฅด๊ฒŒ ๋ณด์ด์ง€?โ€๋ผ๊ณ  ์ƒ๊ฐํ•œ ์ ์ด ์žˆ๋‹ค๋ฉดโ€”๋‹น์‹ ์€ ๋ฏธ์นœ ๊ฒŒ ์•„๋‹ˆ๊ณ , ํ™•์‹คํžˆ ...