π Redux(리λμ€): λ ν μ¬μ΄μ μ°¨μ΄
(CS μ©μ΄ μ 리 - π Redux(리λμ€) μΆκ°) Β |
(μ°¨μ΄ μμ)
|
2025λ 4μ 17μΌ (λͺ©) 14:25 κΈ°μ€ μ΅μ ν
π Redux(리λμ€)
> `Redux`λ μλ°μ€ν¬λ¦½νΈ μ±μ μν μμΈ‘ κ°λ₯ν μν 컨ν μ΄λμ΄λ€.
`Redux`λ μΌκ΄μ μΌλ‘ λμνκ³ , μλ‘ λ€λ₯Έ νκ²½(μλ², ν΄λΌμ΄μΈνΈ, λ€μ΄ν°λΈ) λ±μμ μλνκ³ , ν μ€νΈνκΈ° μ¬μ΄ μ±μΌλ‘ μμ±ν μ μκ² λμμ€λ€. `React`μ `React Native`μ κ°μ λ€λ₯Έ λ·° λΌμ΄λΈλ¬λ¦¬μ ν¨κ» μ¬μ©ν μ μκ³ , `Redux`λ λ§€μ° μμ§λ§(μμ‘΄ λΌμ΄λΈλ¬λ¦¬ ν¬ν¨ 2KB), μ¬μ© κ°λ₯ν μ λμ¨(νλ‘κ·Έλ¨μ κΈ°λ₯μ 보μνκΈ° μν΄ μΆκ°νλ 보쑰 νλ‘κ·Έλ¨)μ λ§€μ° λ§λ€.
Reduxλ₯Ό μ¬μ©νλ©΄ μ μμΌλ‘ μνλ₯Ό κ΄λ¦¬ν΄μ£Όλ μ μ₯μλ₯Ό μ 곡 λ°μ μ μμ΄, μΈμ μ΄λμλ μ μ₯μμ μ κ·Όνμ¬ μνκ΄λ¦¬(state management)λ₯Ό νΈλ¦¬νκ³ ν¨μ¨μ μΌλ‘ λ€λ£° μ μκ² ν΄μ€λ€.
Reduxλ μ΄λ΄ λ μ¬μ©ν΄μΌ νλ€.
`Redux`λ μνλ₯Ό κ΄λ¦¬νκΈ°μ μ μ©ν λꡬμ΄μ§λ§ νμ¬ μν©μ μ ν©νμ§ λ°μ Έ 보μμΌ νλ€. λ¨μ§ λκ΅°κ°κ° μ¬μ©νλΌκ³ νλ€λ μ΄μ λ§μΌλ‘ `Redux`λ₯Ό μ¬μ©ν΄μλ μλλ€. μκ°μ λ€μ¬μ μ μ¬μ μΈ μ΄μ κ³Ό κ·Έμ λ°λ₯΄λ λ¨μ μ μ΄ν΄ν΄μΌ νλ€.
Reduxλ₯Ό μ¬μ©νκΈ° μ ν©ν μν©
> 1. κ³μν΄μ λ³ννλ μλΉν μμ λ°μ΄ν°κ° μμ κ²½μ° > 2. μνλ₯Ό μν λ¨ νλμ κ·Όμμ΄ νμν κ²½μ° > 3. μ±μ μ€κ° λλ ν° κ·λͺ¨μ μ½λλ² μ΄μ€κ° μκ³ , λ§μ μ¬λλ€μ΄ μμ ν κ²½μ°
Redux ν€μλ
`Redux`λ₯Ό 본격μ μΌλ‘ μ¬μ©νκΈ° μ μ©μ΄μ κ°λ μ μμμΌ νλ€.
1. Action (μ‘μ )
μνλ₯Ό μ λ°μ΄νΈνλλ° νμν μ 보λ₯Ό λ΄μ κ°μ²΄λ€. `Action` κ°μ²΄λ λ°λμ κ³ μ ν νμ (type)μ νλ‘νΌν°(Property)λ₯Ό κ°μ Έμνκ³ , μνλ₯Ό λ³κ²½ν΄μΌ λ λ, μ΄λ ν λ³νλ₯Ό μ€μ§ ν΄λΉνλ μ‘μ μ λ°μμν¬ μ μλ€.
2. Action Creator (μ‘μ μμ± ν¨μ)
`action`μ΄ λμμ λν΄ μ μΈλ κ°μ²΄λΌλ©΄, `Action Creator`λ `action`μ μμ±νμ¬ μ€μ κ°μ²΄λ‘ λ§λ€μ΄ μ£Όλ ν¨μλ€. λ³νλ₯Ό μκΈΈ λλ§λ€ `action` κ°μ²΄λ₯Ό λ§λ€μ΄μ€μΌ νλλ°, λ§€λ² μλ‘μ΄ κ°μ²΄λ₯Ό λ§λ€ νμ μμ΄ ν¨μλ‘ λ§λ€μ΄ μ¬μ¬μ©ν μ μλ€.
3. Reducer (리λμ)
`store`μ μ κ·Όν΄μ μν(state) λ³νλ₯Ό μΌμΌν€λ ν¨μλ€. μ‘μ μ λ°μμν€λ €λ©΄ `reducer`κ° νμ¬ μνμ μ λ¬λ°μ μ‘μ κ°μ²΄λ₯Ό νλΌλ―Έν°(parameter)λ‘ λ°μμ¨λ€. λ°ννλ μνλ μλ‘ λ§λ€μ΄μ λ°νμ ν΄μ€λ€.
4. Store (μ€ν μ΄)
`store`λ μνκ° κ΄λ¦¬λλ μ€μ§ νλμ 곡κ°μ΄λ€. μ±μμ νμ¬`state`μ `reducer`κ° μ μ₯λμ΄ μμΌλ©°, μ»΄ν¬λνΈμμ μν μ λ³΄κ° νμν λ μ€ν μ΄μ μ κ·Όνλ€.
5. Dispatch (λμ€ν¨μΉ)
`Dispatch`λ `store` λ΄μ₯ ν¨μ μ€ νλμ΄λ©°, `action`μ λ°μμν€λ ν¨μλ€. `action`μ νλΌλ―Έν°λ‘ μ λ¬νκ³ ,`dispatch`κ° νΈμΆλλ©΄ `store`λ `reducer` ν¨μλ₯Ό μ€νμμΌμ μλ‘μ΄ μνλ₯Ό λ§λ€μ΄ μ€λ€.
6. Subscribe (ꡬλ )
`Subscribe`λ `store`μ λ΄μ₯ ν¨μ μ€ νλμ΄λ©°, νΉμ ν¨μλ₯Ό μ λ¬ν΄μ£Όλ©΄ `action`μ΄ `dispatch` λμμ λλ§λ€ μ λ¬λ ν¨μκ° νΈμΆλλ€.
Redux νλ¦
<img src="https://velog.velcdn.com/images/tlsl13/post/d537b15b-d1cd-4671-b761-4709581207a1/image.gif" width="30%" height="30%"/>
> 1. UIμμ μ»΄ν¬λνΈ λ΄μ μ‘΄μ¬νλ μ΄λ²€νΈκ° νΈμΆλλ€. > 2. μ΄λ²€νΈμ μ°κ²°λ `Action Creator`κ° νΈμΆλλ€. > 3. Action Creatorμμ μμ±λ `Action`μ΄ νΈμΆλλ€. > 4. `Action`μ΄ `Reducer`λ‘ μ λ¬λλ€. μ΄ κ³Όμ μ `Dispatch`μμ λ΄λΉνλ€. > 5. `Reducer`μμ `Dispatch`λ actionμ λ°λΌ μνκ°μ λ³κ²½νλ€. > 6. λ³κ²½μ¬νμ΄ λ λλ§λμ΄ UIμ λνλλ€.
λμ μ견
κ°λ¨ν νλ‘μ νΈμλ `Redux`λ₯Ό μ¬μ©νλ κ²λ³΄λ€ νμ μ νλ κ²½μ°λ 볡μ‘ν λ‘μ§ κ΅¬μ‘°μΌ λ μ¬μ©νλ©΄ ν¨μ¨μ μ΄λ€. `Redux`λ₯Ό μ¬μ©νλ©΄ μ μ§λ³΄μκ° μ©μ΄ν΄μ§λ―λ‘ κΈ°λ³Έ κ°λ κ³Ό νλ¦μ μκ³ μλ€λ©΄ μ΄ λΌμ΄λΈλ¬λ¦¬λ₯Ό νμ©νλ κ²μ μΆμ²νλ€.
>