[๋ฐ๋ธŒ์ฝ”์Šค] Redux

2025. 6. 16. 23:25ยท๐Ÿ•Š๏ธํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค/TIL

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

 

๊ฐ•์˜๋Š” ์ด๊ฑฐ ์ด ํ€„๋ฆฌํ‹ฐ์— ๊ณต์งœ ๋„˜ ์กฐํ•˜์š”..

 

[์ง€๊ธˆ ๋ฌด๋ฃŒ]์ƒํ™œ์ฝ”๋”ฉ - Redux ๊ฐ•์˜ | Egoing Lee - ์ธํ”„๋Ÿฐ

Egoing Lee | , [์ž„๋ฒ ๋”ฉ ์˜์ƒ] 1. ๊ฐ•์˜ ์†Œ๊ฐœ ์ƒํ™œ์ฝ”๋”ฉ์˜ Redux ์ˆ˜์—…์€ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํƒœ ์ €์žฅ์†Œ์ธ Redux๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ฐ•์˜์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ•์˜์—์„œ๋Š” ์ˆœ์ˆ˜ํ•œ ์›น๊ธฐ์ˆ ์ธ HTML, JavaScript์™€ Redux๋งŒ์„

www.inflearn.com


Immutablity

๋จผ์ €, Redux๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— Javascript Immutablity ๊ฐœ๋…๋ถ€ํ„ฐ ์งš์–ด๋ณด์ž.

Immutability ์ด๋ž€? 
๊ฐ์ฒด๋‚˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ์„ฑ๋œ ์ดํ›„ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ํŠน์„ฑ

Immutable์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋งŒ ํ•œ์ •์ ์œผ๋กœ ์ ์šฉ๋˜๋Š” ๊ฐœ๋…์ด ์•„๋‹ˆ๋ผ, ๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ์ƒํƒœ๊ด€๋ฆฌ, ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ๋ฒ„๊ทธ ๋ฐฉ์ง€, ๋””๋ฒ„๊น… ๋“ฑ ๋ฌด์ˆ˜ํ•œ ์ธก๋ฉด์—์„œ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค.

 

Javascript์—์ €๋Š” Primitive types, ์ž๋ฃŒํ˜•์ด Immutable์ด๋‹ค. Object types(์ฐธ์กฐํ˜•)์€ mutable์ด๋‹ค.

Number ๊ฐ’ ์ž์ฒด๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Œ
String ๋ฌธ์ž์—ด ๋‚ด๋ถ€๋Š” ์ˆ˜์ • ๋ถˆ๊ฐ€ (์ƒˆ ๋ฌธ์ž์—ด ์ƒ์„ฑ)
Boolean ๊ฐ’ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€
null ๋ถˆ๋ณ€
undefined ๋ถˆ๋ณ€
Symbol ๋ถˆ๋ณ€
BigInt ๋ถˆ๋ณ€

 

์™œ ์ค‘์š”ํ•˜์ง€? 

์ƒํƒœ๊ด€๋ฆฌ์—์„œ ์•ˆ์ •์„ฑ

- React, Redux, zustand ๋“ฑ ์ƒํƒœ ๊ด€๋ฆฌ์—์„œ ์ฃผ๋กœ immutable ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•œ๋‹ค.

- ์ด์ „ ์ƒํƒœ๋ฅผ ๋ณต์ œํ•˜์—ฌ ์ƒˆ๋กœ์šด ์ƒํƒœ๋ฅผ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„๊ทธ๊ฐ€ ์ค„๊ณ , ๋ณ€๊ฒฝ ์ถ”์ ์ด ์‰ฝ๋‹ค.

 

์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ

- ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— side effect๊ฐ€ ์—†๋‹ค.

- ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์ค‘์š”ํ•œ ๊ฐœ๋…์ด๋‹ค.

 

undo, redo ๊ตฌํ˜„์ด ์‰ฝ๋‹ค.

- ์ƒํƒœ๊ฐ€ ๋ณต์‚ฌ๋˜์–ด ์Œ“์ด๋ฏ€๋กœ, ์ด์ „ ์ƒํƒœ๋กœ ์‰ฝ๊ฒŒ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. 

 

Immutable ๋ฐฉ์‹์œผ๋กœ ๊ฐ์ฒด ๋‹ค๋ฃจ๊ธฐ, ๊ฐ์ฒด ๋ถˆ๋ณ€์„ฑ ์œ ์ง€ ๋„๊ตฌ ๋“ฑ ์€ ๊ธ€์ด ๋„ˆ๋ฌด ๊ธธ์–ด์ง€๋ฏ€๋กœ ๋‹ค์Œ์— ํ•œ ๋ฒˆ ์ •๋ฆฌํ•ด๋ณด๊ณ  Redux ์‹œ์ž‘


Redux

A Predictable state container for Javascript apps, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์ƒํƒœ์˜ ์ €์žฅ์†Œ

๋ณต์žก์„ฑ-> ๋ˆˆ์— ๋ณด์ด์ง€ ์•Š์•„์„œ ์œ„ํ—˜ํ•จ. ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ๊ฐ€์žฅ ์œ„ํ—˜ํ•œ ์š”์†Œ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐœ๋ฐœ์ž๋Š” ์ฝ”๋“œ ๋ณต์žก์„ฑ์„ ๋‚ฎ์ถ”๋Š” ๊ฒƒ์„ ์ถ”๊ตฌํ•  ์ˆ˜๋ฐ–์— ์—†๋Š”๋ฐ, ๋ฆฌ๋•์Šค๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ณต์žก์„ฑ์„ ํš๊ธฐ์ ์œผ๋กœ ๋‚ฎ์ถฐ, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฐ๊ณผ๋ฅผ ์‰ฝ๊ฒŒ ์˜ˆ์ƒํ•  ์ˆ˜ ์ž‡๊ฒŒ ํ•˜๋Š” ๋„๊ตฌ์ด๋‹ค.

 

๋ฆฌ๋•์Šค์˜ ํŠน์ง•

1. Single Source of Truth

๋‹จ ํ•˜๋‚˜์˜ ์ง„์‹ค์˜ ์›์ฒœ, ํ•˜๋‚˜์˜ ์ƒํƒœ๋ฅผ ๊ฐ–๋Š”๋‹ค๋Š” ๊ฒƒ์ด ๋ฆฌ๋•์Šค์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์ด๋‹ค.

 

ํ•˜๋‚˜์˜ ๊ฐ์ฒด ์•ˆ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ•„์š”ํ•œ ๋ชจ๋“  ์ƒํƒœ๋ฅผ ์ค‘์•™์ง‘์ค‘์‹์œผ๋กœ ๊ด€๋ฆฌ ํ•œ๋‹ค๋Š” ๊ฒƒ! ๋‹จ ํ•˜๋‚˜์˜ state๋ฅผ ์œ ์ง€ํ•˜์—ฌ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ณต์žก์„ฑ์„ ๋‚ฎ์ถ˜๋‹ค.

 

2. ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ์ฒ ์ €ํžˆ ์ฐจ๋‹จํ•œ๋‹ค.

๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๊ณ  ์‹ถ๋‹ค๋ฉด, ๋””์ŠคํŒจ์ณ, ๋ฆฌ๋“€์„œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ๋งŒ ์ˆ˜์ •์„ ๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ๊ฐˆ ๋•Œ๋„ ์—„๊ฒฉํ•œ ๊ด€๋ฆฌ๋ฅผ ํ•œ๋‹ค. getstate๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์ž‡๋‹ค.

์ฆ‰, ์™ธ๋ถ€์—์„œ ์ง์ ‘์ ์œผ๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๊ฒŒ ํ•˜์—ฌ state๊ฐ€ ์˜๋„์ ์ด์ง€ ์•Š๊ฒŒ ๋ฐ”๋€Œ์ง€ ์•Š๊ฒŒ ๋ฐฉ์ง€ํ•˜์—ฌ, ์˜ˆ์ƒ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ฒŒ ํ•œ๋‹ค.

 

๊ฐ๊ฐ sate ์ƒ์„ฑ ์‹œ ์ฒ ์ €ํžˆ ํ†ต์ œ, ๋ณ€๊ฒฝ ์‹œ์—๋„ ์›๋ณธ์„ ๋ณต์ œํ•˜๊ณ  ๋ณต์ œํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ์ƒˆ๋กœ์šด ์›๋ณธ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉ -> ๋…๋ฆฝ์ ์ธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Undo, redo๋ฅผ ๋งค์šฐ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.  

 

๋ฆฌ๋•์Šค ์‚ฌ์šฉ ์‹œ ์ด์ „ ์ƒํƒœ๊นŒ์ง€ ๊ผผ๊ผผํžˆ ๋ ˆ์ฝ”๋”ฉ ํ•˜์—ฌ ๋””๋ฒ„๊น… ์‹œ ์ด์ „ ์ƒํƒœ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ํ†ตํ•ด ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์ž‡๋”ฐ..

 

ํ•ซ ๋ชจ๋“ˆ ๋ฆฌ๋กœ๋”ฉ - ์ž๋™์œผ๋กœ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ใ…‡์— ๋ฐ˜์˜๋˜๋Š” ๊ฒƒ. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ฆฌํ”„๋ ˆ์‹œ ๋˜์ง€๋งŒ ๋ฐ์ดํ„ฐ๋Š” ์œ ์ง€๋˜์–ด ๋‹ค์‹œ ์ž…๋ ฅํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ๊ฐœ๋ฐœ ํŽธ์˜์„ฑ ํฌ๊ฒŒ ํ–ฅ์ƒ

 

 

State์™€ Render

Redux์˜ ํ•ต์‹ฌ์€ Store๋‹ค. Store์€ State๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณณ. State์— ์ง์ ‘ ์ ‘์†ํ•˜๋Š” ๊ฒƒ์€ ์ ˆ๋Œ€์ ˆ๋Œ€ ์ ˆ๋Œ€ ์•ˆ๋œ๋‹ค. 

 

 

Store์„ ๋งŒ๋“ค ๋•Œ๋Š” Reducer์„ ๋งŒ๋“ค์–ด์„œ ๊ณต๊ธ‰ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. 

createStore -> store ์ƒ์„ฑ, ์ธ์ž๋กœ reducer์„ ๊ผญ ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

 

Render์€ Redux์™€ ์ƒ๊ด€ ์—†์ด UI๋ฅผ ๋งŒ๋“œ๋Š” ์—ญํ• ์„ ํ•˜๋Š” ๋‚ด ์ฝ”๋“œ^^

 

 

'๐Ÿ•Š๏ธํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค > TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฐ๋ธŒ์ฝ”์Šค] react task app 2  (0) 2025.06.21
[๋ฐ๋ธŒ์ฝ”์Šค] ๋ฆฌ์•กํŠธ task app ๊ตฌํ˜„ 1  (0) 2025.06.17
[๋ฐ๋ธŒ์ฝ”์Šค] React ๊ธฐ์ดˆ ํ•ต์‹ฌ ์ •๋ฆฌ(state, ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น, ์ปดํฌ๋„ŒํŠธ ๋ฐ˜๋ณต)  (1) 2025.06.15
[๋ฐ๋ธŒ์ฝ”์Šค] React์™€ JSX, UI ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ์ „ํ™˜  (1) 2025.06.14
[๋ฐ๋ธŒ์ฝ”์Šค] ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ: ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด๋ถ€ํ„ฐ ํด๋ž˜์Šค๊นŒ์ง€  (0) 2025.06.11
'๐Ÿ•Š๏ธํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค/TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฐ๋ธŒ์ฝ”์Šค] react task app 2
  • [๋ฐ๋ธŒ์ฝ”์Šค] ๋ฆฌ์•กํŠธ task app ๊ตฌํ˜„ 1
  • [๋ฐ๋ธŒ์ฝ”์Šค] React ๊ธฐ์ดˆ ํ•ต์‹ฌ ์ •๋ฆฌ(state, ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น, ์ปดํฌ๋„ŒํŠธ ๋ฐ˜๋ณต)
  • [๋ฐ๋ธŒ์ฝ”์Šค] React์™€ JSX, UI ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ์ „ํ™˜
ํ‚ํ‚์ž‰
ํ‚ํ‚์ž‰
๋ฟŒ๋ก ํŠธ ๊ฐœ๋ฐœ์ž(์ง€๋ง์ƒ)์˜ ํ’€์Šคํƒ ๊ฐœ๋ฐœ์ž ๋„์ „๊ธฐ
  • ํ‚ํ‚์ž‰
    monicx.dev
    ํ‚ํ‚์ž‰
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (116) N
      • ๐Ÿ–ฅ๏ธdevelop (13) N
        • Github (2)
        • Frontend (6) N
        • Backend (5)
        • Mobile (0)
        • CS (0)
        • Three.js (0)
        • Docker (0)
      • ๐Ÿ“•review (17)
        • ์ฑ… (12)
        • ํ–‰์‚ฌ (0)
        • ํšŒ๊ณ  (2)
      • โญproject (5)
        • petiary (2)
        • ๆšŽ่ฉ  (0)
        • ์ธํ„ด (2)
      • ๐Ÿ˜ถ‍๐ŸŒซ๏ธalgorithm (0)
      • ๐Ÿ’กtips (1)
      • ๐Ÿ˜Ždaily (10)
      • ๐Ÿ•น๏ธgame (0)
      • ๐Ÿ•Š๏ธํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค (66) N
        • TIL (42) N
        • ํ”„๋กœ์ ํŠธ (16)
        • ํšŒ๊ณ  (8)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
  • ๋งํฌ

    • ๋ฒจ๋กœ๊ทธ
  • ์ธ๊ธฐ ๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
ํ‚ํ‚์ž‰
[๋ฐ๋ธŒ์ฝ”์Šค] Redux
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”