๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • What would life be If we had no courage to attemp anything?
Development/State

[Redux] Redux ๊ธฐ์ดˆ - ์ƒํ™œ์ฝ”๋”ฉ

by DevIseo 2023. 6. 16.

action์„ ํ†ตํ•ด action์„ dispatch์— ์ „๋‹ฌํ•˜๊ณ  
reducer๊ฐ€ state๊ฐ’์„ ๊ฐฑ์‹ ํ•˜๊ณ  
dispatch๊ฐ€ subscribeํ•˜๊ณ ์žˆ๋Š” ํ•จ์ˆ˜๋“ค์„ ํ˜ธ์ถœํ•ด
state๊ฐ’์„ ์ฐธ์กฐํ•˜์—ฌ UI๋ฅผ ๋ฐ”๊ฟ”์คŒ

state

type State = any
  • ์ €์žฅ์†Œ(store)์— ์˜ํ•ด ๊ด€๋ฆฌ๋จ
  • getState()์— ์˜ํ•ด ๋ฐ˜ํ™˜๋˜๋Š” ํ•˜๋‚˜์˜ ์ƒํƒœ๊ฐ’

action

type Action = Object
  • ์–ด๋–ค ์ž‘์—…์„ ํ• ์ง€ ์„ค๋ช…ํ•ด์ฃผ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ˆœ์ˆ˜ ๊ฐ์ฒด
  • store์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•
  • UI ์ด๋ฒคํŠธ์—์„œ ์™”๋“ , ๋„คํŠธ์›Œํฌ ์ฝœ๋ฐฑ์—์„œ ์™”๋“ , ์›น์†Œ์ผ“๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ์†Œ์Šค์—์„œ ์™”๋“  ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ์•ก์…˜์œผ๋กœ์จ ๋ณด๋‚ด์ง

reducer

type Reducer<S, A> = (state: S, action: A) => S
  • ๋ˆ„์ ๊ฐ’๊ณผ ๊ฐ’์„ ๋ฐ›์•„ ์ƒˆ๋กœ์šด ๋ˆ„์ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
  • ๊ฐ’๋“ค์˜ ์ปฌ๋ ‰์…˜์„ ๋ฐ›์•„ ํ•˜๋‚˜์˜ ๊ฐ’์œผ๋กœ ์ค„์ด๋Š”๋ฐ ์‚ฌ์šฉ
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ Array.prototype.reduce()์— ํ•ด๋‹น
  • ๋ˆ„์ ๊ฐ’ : ์ƒํƒœ ๊ฐ์ฒด, ๋ˆ„์ ๋  ๊ฐ’ : ์•ก์…˜
  • ์ฃผ์–ด์ง„ ์ด์ „ ์ƒํƒœ์™€ ์•ก์…˜์—์„œ ์ƒˆ๋กœ์šด ์ƒํƒœ๋ฅผ ๊ณ„์‚ฐ
  • ๊ฐ™์€ ์ž…๋ ฅ์ด ์žˆ์œผ๋ฉด ๊ฐ™์€ ์ถœ๋ ฅ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ˆœ์ˆ˜ํ•จ์ˆ˜
  • APIํ˜ธ์ถœ์„ ๋ฆฌ๋“€์„œ ์•ˆ์— ๋„ฃ์ง€ ๋ง๊ฒƒ

dispatch

type BaseDispatch = (a: Action) => Action
type Dispatch = (a: Action | AsyncAction) => any
  • ์•ก์…˜์ด๋‚˜ ๋น„๋™๊ธฐ ์•ก์…˜์„ ๋ฐ›๋Š” ํ•จ์ˆ˜

 

์‹ค์Šต - github repository

https://github.com/yuiseo/study_redux

 

GitHub - yuiseo/study_redux

Contribute to yuiseo/study_redux development by creating an account on GitHub.

github.com

 

๋Œ“๊ธ€