Skip to content
gyim1345 edited this page Nov 23, 2020 · 9 revisions

λ¦¬λ•μŠ€

μž₯점

  • μ»΄ν¬λ„ŒνŠΈ μ½”λ“œλ‘œ λΆ€ν„° μƒνƒœ 관리 μ½”λ“œλ₯Ό 뢄리할 수 μžˆλ‹€.
  • μ„œλ²„ λ Œλ”λ§ μ‹œ 데이터 전달이 κ°„νŽΈν•˜λ‹€.
  • 둜컬 μŠ€ν† λ¦¬μ§€μ— 데이터λ₯Ό μ €μž₯ν•˜κ³  λΆˆλŸ¬μ˜€λŠ” μ½”λ“œλ₯Ό μ‰½κ²Œ μž‘μ„±ν•  수 μžˆλ‹€.
  • 같은 상탯값을 λ‹€μˆ˜μ˜ μ»΄ν¬λ„ŒνŠΈμ—μ„œ ν•„μ—¬γ…›λ‘œ ν•  λ•Œ μ’‹λ‹€.
  • λΆ€λͺ¨ μ»΄ν¬λ„ŒνŠΈμ—μ„œ κΉŠμ€ κ³³μ—μ„œ μžˆλŠ” μžμ‹ μ»΄ν¬λ„ŒνŠΈμ— 상탯값을 전달 ν•  λ•Œ μ’‹λ‹€
  • μ•Œλ¦Όμ°½κ³Ό 같은 μ „μ—­ μ»΄ν¬λ„ŒνŠΈμ˜ 상탯값을 관리할 λ•Œ μ’‹λ‹€.
  • νŽ˜μ΄μ§€κ°€ μ „ν™˜λ˜μ–΄λ„ λ°μ΄ν„°λŠ” μ‚΄μ•„ μžˆμ–΄μ•Ό ν•  λ•Œ μ’‹λ‹€.

원칙

  • 전체 상탯값을 ν•˜λ‚˜μ˜ 객체에 μ €μž₯ν•œλ‹€
  • 상탯값은 λΆˆλ³€ 객체닀
  • 상탯값은 순수 ν•¨μˆ˜μ— μ˜ν•΄μ„œλ§Œ λ³€κ²½λ˜μ–΄μ•Ό ν•œλ‹€.

ꡬ성

  • μ•‘μ…˜
  • 미듀웨어
  • λ¦¬λ“€μ„œ
  • μŠ€ν† μ–΄

μ•‘μ…˜

  • type 속성값을 κ°€μ§„ js 객체.
  • action 객체λ₯Ό dispatch λ©”μ„œλ“œμ— λ„£μ–΄μ„œ ν˜ΈμΆœν•˜λ©΄ λ¦¬λ•μŠ€λŠ” 상탯값을 λ³€κ²½ν•˜κΈ° μœ„ν•΄ μœ„ κ·Έλ¦Ό 처럼 μˆ˜ν–‰ν•œλ‹€.
store.dispatch({ type: 'ADD', title: '타이틀 μΆ”κ°€ν•  λ‚΄μš©', priority:'high'})

미듀웨어

  • λ¦¬λ“€μ„œκ°€ μ•‘μ…˜μ„ μ²˜λ¦¬ν•˜κΈ° 전에 μ‹€ν–‰λ˜λŠ” ν•¨μˆ˜λ‹€.
  • 디버깅 λͺ©μ μœΌλ‘œ μ‚­νƒ―κ°’ λ³€κ²½ μ‹œ 둜그λ₯Ό 좜λ ₯ν•˜κ±°λ‚˜, λ¦¬λ“€μ„œμ—μ„œ λ°œμƒν•œ μ˜ˆμ™Έλ₯Ό μ„œλ²„λ‘œ μ „μ†‘ν•˜λŠ” λ“±μ˜ λͺ©μ μœΌλ‘œ ν™œμš© ν•œλ‹€.
const middleware = store => next => action => next(action)

μŠ€ν† μ–΄

  • λ¦¬λ•μŠ€μ˜ 상탯값을 κ°€μ§€λŠ” 객체닀.
  • μ•‘μ…˜μ˜ λ°œμƒμ€ μŠ€ν† μ–΄μ˜ dispatch λ©”μ„œλ“œλ‘œ μ‹œμž‘λœλ‹€
  • μŠ€ν† μ–΄λŠ” μ•‘μ…˜μ΄ λ°œμƒν•˜λ©΄ 미듀웨어 ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•˜κ³ , λ¦¬λ“€μ„œλ₯Ό μ‹€ν–‰ν•΄μ„œ 상탯값을 μƒˆλ‘œμš΄ κ°’μœΌλ‘œ λ³€κ²½ν•œλ‹€.
const INITIAL_STATE = { value: 0};
const reducer = createReducer(INITIAL_STATE, {
  INCREMENT: state => (state.value +=1),
});
const store = createStore(reducer);

비동기 처리 방법

  • λ¦¬λ“€μ„œ μ•ˆμ—μ„œ 비동기λ₯Ό ν•˜κ²Œ 되면 3번 원칙인 '상탯값은 순수 ν•¨μˆ˜μ— μ˜ν•΄μ„œλ§Œ λ³€κ²½λ˜μ–΄μ•Ό ν•œλ‹€.' μœ„λ°°λœλ‹€. κ·Έλž˜μ„œ middlewareμ—μ„œ 처리 ν•˜λŠ”λ° μ΄λ•Œ νŒ¨ν‚€μ§€λ₯Ό μ“΄λ‹€.
  • redux-thunk, redux-observable, redux-saga

좜처: μ‹€μ „ λ¦¬μ•‘νŠΈ ν”„λ‘œκ·Έλž˜λ°, 이재승, μΈμ‚¬μ΄νŠΈ(2020), pg 249~308

Clone this wiki locally