react μ€ν°λμμ 리μ‘νΈλ₯Ό λ€λ£¨λ κΈ°μ μ΄λΌλ μ±
μ μ μ νκ³ μ΄ μ±
μ μ½κ³ λ°°μ΄ κ²μ λ°νμΌλ‘ μμ±λμλ€.
π Reduxλ?
- κ°μ₯ λ§μ΄ μ¬μ©νλ 리μ‘νΈ μν κ΄λ¦¬ λΌμ΄λΈλ¬λ¦¬μ΄λ€.
- μ»΄ν¬λνΈμ μν μ
λ°μ΄νΈ λ‘μ§μ λ€λ₯Έ νμΌλ‘ λΆλ¦¬μμΌμ λμ± ν¨μ¨μ μΌλ‘ κ΄λ¦¬ν μ μλ€.
- μ»΄ν¬λνΈλΌλ¦¬ μνλ₯Ό 곡μ ν΄μΌ ν λλ μ¬λ¬ μ»΄ν¬λνΈλ₯Ό κ±°μΉμ§ μκ³ μ½κ² μνκ°μ μ λ¬νκ±°λ μ
λ°μ΄νΈν μ μλ€.
- μ΄λ
redux
λ 리μ‘νΈμ μ’
μλλ λΌμ΄λΈλ¬λ¦¬κ° μλκ³ λ€λ₯Έ λΌμ΄λΈλ¬λ¦¬μ νλ μμν¬, λ°λλΌ μλ°μ€ν¬λ¦½νΈμ ν¨κ» μ¬μ©ν μ μλ€.
π Redux κ°λ
β¨ μ‘μ
action
- μνλ₯Ό μ
λ°μ΄νΈνλλ° νμν μ 보λ₯Ό λ΄μ κ°μ²΄μ΄λ€.
- μ‘μ
κ°μ²΄λ λ°λμ
type
νλ‘νΌν°λ₯Ό κ°μ ΈμΌ νλλ° μ΄ κ°μ μ‘μ
μ μ΄λ¦μ΄λΌκ³ μκ°νλ©΄ λλ€.
- μ‘μ
μ΄λ¦μ κ³ μ ν΄μΌ νλ€!
β¨ μ‘μ
μμ± ν¨μ
- μ‘μ
κ°μ²΄λ₯Ό λ°ννλ ν¨μμ΄λ€.
- λ§€λ² μ‘μ
κ°μ²΄λ₯Ό μ§μ μμ±νκΈ° λ²κ±°λ‘μΈ μ μκ³ , μ€μλ₯Ό λ°©μ§νκΈ° μν΄ μ‘μ
κ°μ²΄λ₯Ό ν¨μλ‘ κ΄λ¦¬νλ€.
⨠리λμ
- μνλ₯Ό μ
λ°μ΄νΈνλ ν¨μμ΄λ€.
- νμ¬ μνμ μ‘μ
κ°μ²΄λ₯Ό μΈμλ‘ λ°μ μλ‘μ΄ μνλ₯Ό λ°ννλ€.
- μ΄λ νμ¬ μνλ₯Ό λ°λ 첫 λ²μ§Έ μΈμμ μ΄κΈ° μνλ₯Ό κΈ°λ³Έ μΈμλ‘ μ€μ νλ€.
state
κ° undefined
μΌ λ μ΄κΈ° μνκ°μ΄ μ¬μ©λλ€.
- μΈμλ‘ λ°μ νμ¬ μνμ λΆλ³μ±μ μ μ§νλ©΄μ μ
λ°μ΄νΈλ μλ‘μ΄ μνλ₯Ό λ°νν΄μΌ νλ€.
β¨ μ€ν μ΄
- νλ‘μ νΈμ 리λμ€λ₯Ό μ μ©νκΈ° μν΄
store
λ₯Ό μμ±ν΄μΌ νλ€.
createStore
ν¨μμ μΈμλ‘ root reducer
λ₯Ό λ£μ΄ νΈμΆνλ€.
- μ€ν μ΄μλ μνμ 리λμκ° μμΌλ©° μ¬λ¬ λ΄μ₯ν¨μλ μλ€.
import { createStore } from "redux";
const store = createStore(reducer);
β¨ λμ€ν¨μΉ
dispatch
λ μ€ν μ΄ λ΄μ₯ ν¨μ μ€ νλλ‘ μ‘μ
μ dispatch
νλ ν¨μμ΄λ€.
- μ‘μ
κ°μ²΄λ₯Ό μΈμλ‘ λ°μ μ΄λ₯Ό 리λμ ν¨μλ‘ μ λ¬νμ¬ μ€ννλ ν¨μμ΄λ€.
⨠ꡬλ
subscribe
λ μ€ν μ΄ λ΄μ₯ ν¨μ μ€ νλμ΄λ€.
- 리μ€λ μ½λ°± ν¨μλ₯Ό μΈμλ‘ λ°μ νΈμΆνλ©΄, μ‘μ
μ΄
dispatch
λμ΄ μνκ° μ
λ°μ΄νΈλ λλ§λ€ 리μ€λ ν¨μκ° νΈμΆλλ€.
π‘ μ£Όμν΄μΌ ν μ
β λ¨μΌ μ€ν μ΄
- νλμ μ ν리μΌμ΄μ
μλ νλμ μ€ν μ΄λ§ μ΄μνλ κ²μ μ§ν₯νλ€.
β μ½κΈ° μ μ© μν
β 리λμλ μμν ν¨μ
- 리λμ ν¨μλ νμ¬ μν(
state
)μ μ‘μ
κ°μ²΄(action
)λ₯Ό μΈμλ‘ λ°λλ€.
- νλΌλ―Έν° μΈμ κ°μλ μμ‘΄ν΄μ μλλ€.
- μΈμλ‘ λ°μ μνλ 건λλ¦¬μ§ μκ³ , λ³νλ₯Ό μ€ μλ‘μ΄ μνλ₯Ό λ°ννλ€.
- λκ°μ μΈμλ‘ νΈμΆλλ©΄ νμ λκ°μ κ²°κ³Ό κ°μ λ°νν΄μΌ νλ€.