๐Ÿ™ˆ Redux(๋ฆฌ๋•์Šค)

๊ธฐ์ˆ ๋…ธํŠธ
Admin (ํ† ๋ก  | ๊ธฐ์—ฌ)๋‹˜์˜ 2025๋…„ 4์›” 17์ผ (๋ชฉ) 14:25 ํŒ (CS ์šฉ์–ด ์ •๋ฆฌ - ๐Ÿ™ˆ Redux(๋ฆฌ๋•์Šค) ์ถ”๊ฐ€)
(์ฐจ์ด) โ† ์ด์ „ ํŒ | ์ตœ์‹ ํŒ (์ฐจ์ด) | ๋‹ค์Œ ํŒ โ†’ (์ฐจ์ด)

๐Ÿ™ˆ Redux(๋ฆฌ๋•์Šค)

> `Redux`๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์•ฑ์„ ์œ„ํ•œ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์ƒํƒœ ์ปจํ…Œ์ด๋„ˆ์ด๋‹ค.

`Redux`๋Š” ์ผ๊ด€์ ์œผ๋กœ ๋™์ž‘ํ•˜๊ณ , ์„œ๋กœ ๋‹ค๋ฅธ ํ™˜๊ฒฝ(์„œ๋ฒ„, ํด๋ผ์ด์–ธํŠธ, ๋„ค์ดํ‹ฐ๋ธŒ) ๋“ฑ์—์„œ ์ž‘๋™ํ•˜๊ณ , ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์‰ฌ์šด ์•ฑ์œผ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ค€๋‹ค. `React`์™€ `React Native`์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๋ทฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , `Redux`๋Š” ๋งค์šฐ ์ž‘์ง€๋งŒ(์˜์กด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํฌํ•จ 2KB), ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์• ๋“œ์˜จ(ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธฐ๋Šฅ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ํ•˜๋Š” ๋ณด์กฐ ํ”„๋กœ๊ทธ๋žจ)์€ ๋งค์šฐ ๋งŽ๋‹ค.

Redux๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ „์—ญ์œผ๋กœ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ์ €์žฅ์†Œ๋ฅผ ์ œ๊ณต ๋ฐ›์„ ์ˆ˜ ์žˆ์–ด, ์–ธ์ œ ์–ด๋””์„œ๋“  ์ €์žฅ์†Œ์— ์ ‘๊ทผํ•˜์—ฌ ์ƒํƒœ๊ด€๋ฆฌ(state management)๋ฅผ ํŽธ๋ฆฌํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

Redux๋Š” ์ด๋Ÿด ๋•Œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

`Redux`๋Š” ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ์— ์œ ์šฉํ•œ ๋„๊ตฌ์ด์ง€๋งŒ ํ˜„์žฌ ์ƒํ™ฉ์— ์ ํ•ฉํ•œ์ง€ ๋”ฐ์ ธ ๋ณด์•„์•ผ ํ•œ๋‹ค. ๋‹จ์ง€ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์‚ฌ์šฉํ•˜๋ผ๊ณ  ํ–ˆ๋‹ค๋Š” ์ด์œ ๋งŒ์œผ๋กœ `Redux`๋ฅผ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค. ์‹œ๊ฐ„์„ ๋“ค์—ฌ์„œ ์ž ์žฌ์ ์ธ ์ด์ ๊ณผ ๊ทธ์— ๋”ฐ๋ฅด๋Š” ๋‹จ์ ์„ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค.

Redux๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ ํ•ฉํ•œ ์ƒํ™ฉ

> 1. ๊ณ„์†ํ•ด์„œ ๋ณ€ํ™”ํ•˜๋Š” ์ƒ๋‹นํ•œ ์–‘์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ > 2. ์ƒํƒœ๋ฅผ ์œ„ํ•œ ๋‹จ ํ•˜๋‚˜์˜ ๊ทผ์›์ด ํ•„์š”ํ•  ๊ฒฝ์šฐ > 3. ์•ฑ์— ์ค‘๊ฐ„ ๋˜๋Š” ํฐ ๊ทœ๋ชจ์˜ ์ฝ”๋“œ๋ฒ ์ด์Šค๊ฐ€ ์žˆ๊ณ , ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ž‘์—…ํ•  ๊ฒฝ์šฐ


Redux ํ‚ค์›Œ๋“œ

`Redux`๋ฅผ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์ „ ์šฉ์–ด์™€ ๊ฐœ๋…์„ ์•Œ์•„์•ผ ํ•œ๋‹ค.

1. Action (์•ก์…˜)

์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๋‹ด์€ ๊ฐ์ฒด๋‹ค. `Action` ๊ฐ์ฒด๋Š” ๋ฐ˜๋“œ์‹œ ๊ณ ์œ ํ•œ ํƒ€์ž…(type)์˜ ํ”„๋กœํผํ‹ฐ(Property)๋ฅผ ๊ฐ€์ ธ์•„ํ•˜๊ณ , ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ๋  ๋•Œ, ์–ด๋– ํ•œ ๋ณ€ํ™”๋ฅผ ์ค„์ง€ ํ•ด๋‹นํ•˜๋Š” ์•ก์…˜์„ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

2. Action Creator (์•ก์…˜ ์ƒ์„ฑ ํ•จ์ˆ˜)

`action`์ด ๋™์ž‘์— ๋Œ€ํ•ด ์„ ์–ธ๋œ ๊ฐ์ฒด๋ผ๋ฉด, `Action Creator`๋Š” `action`์„ ์ƒ์„ฑํ•˜์—ฌ ์‹ค์ œ ๊ฐ์ฒด๋กœ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ํ•จ์ˆ˜๋‹ค. ๋ณ€ํ™”๋ฅผ ์ƒ๊ธธ ๋•Œ๋งˆ๋‹ค `action` ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์ค˜์•ผ ํ•˜๋Š”๋ฐ, ๋งค๋ฒˆ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ํ•„์š” ์—†์ด ํ•จ์ˆ˜๋กœ ๋งŒ๋“ค์–ด ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

3. Reducer (๋ฆฌ๋“€์„œ)

`store`์— ์ ‘๊ทผํ•ด์„œ ์ƒํƒœ(state) ๋ณ€ํ™”๋ฅผ ์ผ์œผํ‚ค๋Š” ํ•จ์ˆ˜๋‹ค. ์•ก์…˜์„ ๋ฐœ์ƒ์‹œํ‚ค๋ ค๋ฉด `reducer`๊ฐ€ ํ˜„์žฌ ์ƒํƒœ์™€ ์ „๋‹ฌ๋ฐ›์€ ์•ก์…˜ ๊ฐ์ฒด๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ(parameter)๋กœ ๋ฐ›์•„์˜จ๋‹ค. ๋ฐ˜ํ™˜ํ•˜๋Š” ์ƒํƒœ๋Š” ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์„œ ๋ฐ˜ํ™˜์„ ํ•ด์ค€๋‹ค.

4. Store (์Šคํ† ์–ด)

`store`๋Š” ์ƒํƒœ๊ฐ€ ๊ด€๋ฆฌ๋˜๋Š” ์˜ค์ง ํ•˜๋‚˜์˜ ๊ณต๊ฐ„์ด๋‹ค. ์•ฑ์—์„œ ํ˜„์žฌ`state`์™€ `reducer`๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ปดํฌ๋„ŒํŠธ์—์„œ ์ƒํƒœ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•  ๋•Œ ์Šคํ† ์–ด์— ์ ‘๊ทผํ•œ๋‹ค.

5. Dispatch (๋””์ŠคํŒจ์น˜)

`Dispatch`๋Š” `store` ๋‚ด์žฅ ํ•จ์ˆ˜ ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ, `action`์„ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ํ•จ์ˆ˜๋‹ค. `action`์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌํ•˜๊ณ ,`dispatch`๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด `store`๋Š” `reducer` ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œ์ผœ์„œ ์ƒˆ๋กœ์šด ์ƒํƒœ๋ฅผ ๋งŒ๋“ค์–ด ์ค€๋‹ค.

6. Subscribe (๊ตฌ๋…)

`Subscribe`๋Š” `store`์˜ ๋‚ด์žฅ ํ•จ์ˆ˜ ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ, ํŠน์ • ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌํ•ด์ฃผ๋ฉด `action`์ด `dispatch` ๋˜์—ˆ์„ ๋•Œ๋งˆ๋‹ค ์ „๋‹ฌ๋œ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค.

Redux ํ๋ฆ„

<img src="https://velog.velcdn.com/images/tlsl13/post/d537b15b-d1cd-4671-b761-4709581207a1/image.gif" width="30%" height="30%"/>

> 1. UI์—์„œ ์ปดํฌ๋„ŒํŠธ ๋‚ด์— ์กด์žฌํ•˜๋Š” ์ด๋ฒคํŠธ๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค. > 2. ์ด๋ฒคํŠธ์™€ ์—ฐ๊ฒฐ๋œ `Action Creator`๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค. > 3. Action Creator์—์„œ ์ƒ์„ฑ๋œ `Action`์ด ํ˜ธ์ถœ๋œ๋‹ค. > 4. `Action`์ด `Reducer`๋กœ ์ „๋‹ฌ๋œ๋‹ค. ์ด ๊ณผ์ •์„ `Dispatch`์—์„œ ๋‹ด๋‹นํ•œ๋‹ค. > 5. `Reducer`์—์„œ `Dispatch`๋œ action์— ๋”ฐ๋ผ ์ƒํƒœ๊ฐ’์„ ๋ณ€๊ฒฝํ•œ๋‹ค. > 6. ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ๋ Œ๋”๋ง๋˜์–ด UI์— ๋‚˜ํƒ€๋‚œ๋‹ค.

๋‚˜์˜ ์˜๊ฒฌ

๊ฐ„๋‹จํ•œ ํ”„๋กœ์ ํŠธ์—๋Š” `Redux`๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ˜‘์—…์„ ํ•˜๋Š” ๊ฒฝ์šฐ๋‚˜ ๋ณต์žกํ•œ ๋กœ์ง ๊ตฌ์กฐ์ผ ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ํšจ์œจ์ ์ด๋‹ค. `Redux`๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•ด์ง€๋ฏ€๋กœ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ํ๋ฆ„์„ ์•Œ๊ณ ์žˆ๋‹ค๋ฉด ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค.

>