# * React Redux๋ž€?

Written by ๐Ÿ“ Wabi

# Redux๊ฐ€ ์ƒ๊ฒจ๋‚œ ์ด์œ 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹ฑ๊ธ€ํŽ˜์ด์ง€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ (์ดํ•˜ 'SPA') ๊ฐœ๋ฐœ์ด ํ™œ๋ฐœํ•˜๊ฒŒ ์ด๋ฃจ์–ด ์ง€๋ฉด์„œ, ๋ฆฌ์—‘ํŠธ์˜ ์ปดํฌ๋„ŒํŠธ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” state์˜ ๊ตฌ์กฐ๊ฐ€ ์ ์  ๋ณต์žกํ•ด์ง€๊ณ , JSON์˜ depth๋„ ์ ์  ๊นŠ์–ด์ ธ ๊ฐ€๋ฉด์„œ, ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ state๋ฅผ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๋กœ ๊ณ„์† ์ƒํƒœ๋ณ€ํ™”๋ฅผ ์•Œ๋ ค์ฃผ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ๋ณต์žกํ•ด ์ง€๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜์˜€๊ณ , ์‚ฌ์ด๋“œ ์ดํŒฉํŠธ๋ฅผ ์ผ์œผํ‚ค๋Š” ๋น„๋™๊ธฐ ํ†ต์‹  ๋ฐ์ดํ„ฐ๋Š” ๋ณต์žกํ•œ ์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ์—์„œ ๋”์šฑ ๋” ์˜ค๋ฅ˜๋ฅผ ์ฐพ๊ธฐ๋„ ํž˜๋“ค๊ณ  ์ปดํฌ๋„ŒํŠธ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ธฐ์—๋„ ํž˜๋“ค์–ด์กŒ๊ธฐ ๋•Œ๋ฌธ์— ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ํŽธํ•˜๊ฒŒ ํ•˜๊ธฐ์œ„ํ•ด Redux๊ฐ€ ์ƒ๊ฒจ๋‚ฌ๋‹ค. (MVC ํŒจํ„ด -> Flux ํŒจํ„ด , Redux)

MVC Pattern Flux Pattern
mvc_pattern flux_pattern

์ถœ์ฒ˜ : ์›น Frameworks

# Flux & Redux

๋ฆฌ๋•์Šค๋Š” ํ”Œ๋Ÿญ์Šค ํŒจํ„ด์˜ ์ค‘์š”ํ•œ ํŠน์ง•๋“ค์—์„œ ์˜๊ฐ์„ ๋ฐ›์•„์„œ ๋งŒ๋“ค์–ด์กŒ๋‹ค๊ณ , ๋ฆฌ๋•์Šค ๊ณต์‹ ๋ฌธ์„œ์—๋„ ๋‚˜์™€์žˆ๋‹ค.

  1. Redux ๋Š” Flux ํŒจํ„ด๊ณผ ๋ชจ๋ธ ์—…๋ฐ์ดํŠธ ๋กœ์ง์— ์ง‘์ค‘ํ•˜๊ฒŒ ํ•ด์ค€๋‹ค๋Š” ์ ์€ ๋™์ผํ•˜๋‹ค.

  2. Redux๋Š” ๋ฐ์ดํ„ฐ์˜ ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š๋Š”๋‹ค. (๋ฆฌ๋“€์„œ์—์„œ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๊ฐ•๋ ฅํžˆ ๊ถŒ์žฅํ•œ๋‹ค.)

  3. Flux์™€ ๋‹ฌ๋ฆฌ Redux์—๋Š” ๋””์ŠคํŒจ์ฒ˜๋ผ๋Š” ๊ฐœ๋…์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

  4. Flux์™€ ๋‹ฌ๋ฆฌ Redux๋Š” ์Šคํ† ์–ด๋ฅผ ๋‹จ ํ•œ๊ฐœ ์ด๋‹ค.


# Redux ๊ทœ์น™

  1. ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋‹จ ํ•˜๋‚˜์˜ Store๊ฐ€ JSONํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

  2. Store ๋‚ด๋ถ€ state์ธ JSON์€ ๋ฌด์กฐ๊ฑด action์„ ํ†ตํ•ด์„œ๋งŒ ๋ณ€๊ฒฝํ•œ๋‹ค.
    Flux ํŒจํ„ด์˜ ํ•ต์‹ฌ ๊ฐœ๋…๊ณผ ๋™์ผํ•˜๋‹ค.

  3. Reducer ๋Š” ์ˆœ์ˆ˜ํ•จ์ˆ˜(Pure function) ์œผ๋กœ ๊ตฌ์„ฑํ•œ๋‹ค.
    ๋ฆฌ๋“€์„œ๋Š” ์—‘์…˜ ํƒ€์ž…๊ณผ, ๋ณ€๊ฒฝ ์ „ State๋ฅผ ๋ฐ›์•„์„œ ์ƒˆ๋กœ์šด State๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜๋กœ, ๋™์ผํ•œ ์•ก์…˜๊ณผ State๋ฅผ ๋ฐ›์œผ๋ฉด ๋™์ผํ•œ ๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค.
    ์ด ํŠน์ง•์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋””๋ฒ„๊น…์„ ์‰ฝ๊ฒŒ ํ•ด์ค€๋‹ค.


# Redux๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹์€ ์˜ˆ์‹œ

  1. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์—ญ์— ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๊ณตํ†ต์˜ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ๊ณต์œ ํ•  ๊ฒฝ์šฐ
    (๋ชจ๋‹ฌ ํŒ์—… ๋˜๋Š” ํŽ˜์ด์ง€ ๋กœ๋”ฉ๋ฐ”)

  2. ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฌด์ˆ˜ํžˆ ๋งŽ์€ Depth์˜ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ์— ์ƒํƒœ๊ฐ’์„ ๋‚ด๋ ค์ค˜์•ผ ๋˜๋Š”๊ฒฝ์šฐ
    withRedux

์ถœ์ฒ˜ : codecentric Blog

Last Updated: 7/5/2019, 8:38:55 AM