[React.js] Redux (1)


Redux

JavaScript μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μœ„ν•œ μƒνƒœ 관리 도ꡬ

React μœ μ‚¬ ν”„λ ˆμž„μ›Œν¬ λŠ” λ¬Όλ‘  Angular 및 일반 JavaScript와도 ν˜Έν™˜ κ°€λŠ₯함

단방ν–₯ 데이터 흐름

μ‚¬μš©ν•˜λŠ” 이유

  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ 더 λ³΅μž‘ν•΄μ§μ— 따라 λ„Β λ§Žμ€ μƒνƒœλ₯ΌΒ μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œλ‘œΒ κ΄€λ¦¬ν•  ν•„μš”κ°€ 있기 λ•Œλ¬Έ
  1. 원칙 :
  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λͺ¨λ“ Β μƒνƒœλŠ” ν•˜λ‚˜μ˜Β μ €μž₯μ†ŒΒ μ•ˆμ— ν•˜λ‚˜μ˜ 객체 트리 ꡬ쑰둜 μ €μž₯
  • μƒνƒœλŠ” 읽기 μ „μš©μ΄λ‹€
  • λ³€ν™”λŠ” 순수 ν•¨μˆ˜λ‘œ μž‘μ„±
  1. 간단 μš©μ–΄ :
  • State : [getState()](https://ko.redux.js.org/api/store#getState)에 μ˜ν•΄ λ°˜ν™˜λ˜λŠ” ν•˜λ‚˜μ˜ μƒνƒœκ°’
  • Action : μƒνƒœλ₯Ό λ³€ν™”μ‹œν‚€λ €λŠ” μ˜λ„λ₯Ό ν‘œν˜„ν•˜λŠ” ν‰λ²”ν•œ 객체 (μ•‘μ…˜μ€ μ–΄λ–€ ν˜•νƒœμ˜ μ•‘μ…˜μ΄ ν–‰ν•΄μ§ˆμ§€ ν‘œμ‹œν•˜λŠ”Β typeΒ ν•„λ“œλ₯Ό κ°€μ Έμ•Ό 함)
  • Reducer : λˆ„μ κ°’μ€ μƒνƒœ 객체이고, λˆ„μ λ  값은 μ•‘μ…˜ (κ°€μž₯ μ€‘μš”ν•œ κ°œλ…)
  • Dispatch : μ•‘μ…˜μ΄λ‚˜Β λΉ„λ™κΈ° μ•‘μ…˜μ„ λ°›λŠ” ν•¨μˆ˜
  • ActionCreator : μ•‘μ…˜μ„ λ§Œλ“œλŠ” ν•¨μˆ˜
  • AsyncAction : Promiseλ‚˜ Thunk와 같은 비동기 κΈ°λ³Έν˜•μœΌλ‘œ, λ¦¬λ“€μ„œμ—κ²Œ 직접 μ „λ‹¬λ˜μ§€λŠ” μ•Šμ§€λ§Œ, μž‘μ—…μ΄ μ™„λ£Œλ˜λ©΄ μ•‘μ…˜μ„ 보냄
  • Middleware : λ””μŠ€νŒ¨μΉ˜ ν•¨μˆ˜λ₯Ό κ²°ν•©ν•΄μ„œ μƒˆ λ””μŠ€νŒ¨μΉ˜ ν•¨μˆ˜λ₯Ό λ°˜ν™˜ν•˜λŠ” κ³ μ°¨ν•¨μˆ˜. 이듀은 쒅쒅 비동기 μ•‘μ…˜μ„ μ•‘μ…˜μœΌλ‘œ μ „ν™˜
  • Store : μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μƒνƒœ 트리λ₯Ό 가지고 μžˆλŠ” 객체
  • StoreCreator :
  • StoreEnhancer : μ €μž₯μ†Œ μƒμ‚°μžλ₯Ό κ²°ν•©ν•˜μ—¬ κ°•ν™”λœ μƒˆ μ €μž₯μ†Œ μƒμ‚°μžλ₯Ό λ°˜ν™˜ν•˜λŠ” κ³ μ°¨ν•¨μˆ˜
# 1. Redux 파일 ꡬ쑰 μ…‹νŒ… => 폴더 κ΅¬μ‘°λŠ” κΉ”λ”ν•˜λ‚˜ μΆ”κ°€ν•  경우 μ„Έ 개의 νŒŒμΌμ„ μˆ˜μ •ν•΄μ•Όν•¨

src
└── store                    //storeμƒνƒœ 트리 객체
      β”œβ”€β”€ store.ts           //Redux μ €μž₯μ†Œλ₯Ό λ§Œλ“œλŠ” ν•¨μˆ˜
			β”œβ”€β”€ (μƒνƒœκ΄€λ¦¬1)          //폴더λͺ…
					β”œβ”€β”€ action.ts     //μƒνƒœ λ³€ν™” μ‹œν‚¬
					β”œβ”€β”€ reducer.ts    //λˆ„μ κ°’μ€ μƒνƒœμ˜ 객체 , λˆ„μ κ°’μ€ μ•‘μ…˜
					└── actionType.ts  //μ•‘μ…˜ νƒ€μž…μ„ λ„£μ–΄μ€Œ
			β”œβ”€β”€ (μƒνƒœκ΄€λ¦¬2)//  폴더λͺ…
					β”œβ”€β”€ action.ts
					β”œβ”€β”€ reducer.ts
					└── actionType.ts

# 2. Redux 파일 ꡬ쑰 μ…‹νŒ… => λͺ¨λ“ˆν™”

src
└── store                    //storeμƒνƒœ 트리 객체
      β”œβ”€β”€ store.ts           //Redux μ €μž₯μ†Œλ₯Ό λ§Œλ“œλŠ” ν•¨μˆ˜
			β”œβ”€β”€ μƒνƒœκ΄€λ¦¬1.ts
			└── μƒνƒœκ΄€λ¦¬2.ts