리λμ€(Redux)
μ»΄ν¬λνΈλ€μ μν κ΄λ ¨ λ‘μ§λ€μ λ€λ₯Έ νμΌλ€λ‘ λΆλ¦¬μμΌ λμ± ν¨μ¨μ μΌλ‘ κ΄λ¦¬
κΈλ‘λ² μν κ΄λ¦¬
=> Context API, useReducerμ μ μ¬
리λμ€λ₯Ό μ¬μ©νλ κ²κ³Ό Context APIλ₯Ό μ¬μ©νλ κ²μ μ°¨μ΄
리λμ€λ,,,
- λ―Έλ€μ¨μ΄
- μ μ©ν ν¨μ(connect)μ Hooks(useSelector, useDispatch, useStore)
- νλμ 컀λ€λ μν (λͺ¨λ κΈλ‘λ² μνλ₯Ό νλμ 컀λ€λ μν κ°μ²΄μ λ£μ΄ μ¬μ©)
concat: 리λμ€μ μν λλ μ‘μ μμ± ν¨μλ₯Ό μ»΄ν¬λνΈμ propsλ‘ λ°μμ¬ μ μλ€.
useSelector, useDispatch, useStore: μμ½κ² μνλ₯Ό μ‘°ννκ±°λ μ‘μ μ λμ€ν¨μΉ ν μ μλ€.
리λμ€λ μΈμ μ¨μΌ ν κΉ?
- νλ‘μ νΈμ κ·λͺ¨κ° ν°κ°?
- Yes: 리λμ€
- No: Context API
- λΉλκΈ° μμ
μ μμ£Ό νκ² λλκ°?
- Yes: 리λμ€
- No: Context API
- 리λμ€λ₯Ό λ°°μ보λκΉ μ¬μ©νλκ² νΈνκ°?
- Yes: 리λμ€
- No: Context API λλ MobX
1. 리λμ€μμ μ¬μ©λλ ν€μλ
μ‘μ (Action)
{
type: "TOGGLE_VALUE"
}
μ‘μ μμ±ν¨μ (Action Creator)
μ‘μ μ λ§λλ ν¨μ
export function addTodo(data) {
return {
type: "ADD_TODO",
data
};
}
// νμ΄ν ν¨μλ‘λ λ§λ€ μ μμ΅λλ€.
export const changeInput = text => ({
type: "CHANGE_INPUT",
text
});
리λμ (Reducer)
λ³νλ₯Ό μΌμΌν€λ ν¨μ
function reducer(state, action) {
// μν μ
λ°μ΄νΈ λ‘μ§
return alteredState;
}
state: νμ¬ μν
+
action
=> μλ‘μ΄ μνλ₯Ό λ§λ€μ΄μ λ°ν
(+) Root Reducer: μ¬λ¬ κ°μ 리λμλ₯Ό λ§λ€κ³ μ΄λ₯Ό ν©μ³μ λ£¨νΈ λ¦¬λμλ₯Ό λ§λ¦
μ€ν μ΄ (Store)
νμ¬μ μ± μν, 리λμ, λ΄μ₯ν¨μλ€μ΄ λ€μ΄μλ€.
λμ€ν¨μΉ (dispatch)
- μ‘μ μ λ°μ μν€λ κ²
- μ‘μ μ νλΌλ―Έν°λ‘ μ λ¬νλ€. dispatch(action)
- νΈμΆνλ©΄ μ€ν μ΄λ 리λμ ν¨μλ₯Ό μ€νμμΌμ ν΄λΉ μ‘μ μ μ²λ¦¬νλ λ‘μ§μ΄ μλ€λ©΄ μ‘μ μ μ°Έκ³ νμ¬ μλ‘μ΄ μνλ₯Ό λ§λ€μ΄μ€λ€.
- μ€ν μ΄μ λ΄μ₯ν¨μ μ€ νλ
ꡬλ (subscribe)
- ν¨μ ννμ κ°μ νλΌλ―Έν°λ‘ λ°μμ¨λ€.
- subscribe ν¨μμ νΉμ ν¨μλ₯Ό μ λ¬ν΄μ£Όλ©΄, μ‘μ μ΄ λμ€ν¨μΉ λμμ λλ§λ€ μ λ¬ν΄μ€ ν¨μκ° νΈμΆλλ€.
- μ€ν μ΄μ λ΄μ₯ν¨μ μ€ νλ
2. 리λμ€μ 3κ°μ§ κ·μΉ
1. νλμ μ΄ν리μΌμ΄μ μμλ νλμ μ€ν μ΄κ° μλ€.
2. μνλ μ½κΈ° μ μ©μ΄λ€.
=> κΈ°μ‘΄μ μνλ 건λ€μ΄μ§ μκ³ μλ‘μ΄ μνλ₯Ό μμ±νμ¬ μ λ°μ΄νΈνλ€. λΆλ³μ±!!!
3. 리λμλ μμν¨μμ¬μΌ νλ€.
- 리λμ ν¨μλ μ΄μ μνμ, μ‘μ κ°μ²΄λ₯Ό νλΌλ―Έν°λ‘ λ°μ΅λλ€.
- μ΄μ μ μνλ μ λλ‘ κ±΄λ€μ΄μ§ μκ³ , λ³νλ₯Ό μΌμΌν¨ μλ‘μ΄ μν κ°μ²΄λ₯Ό λ§λ€μ΄μ λ°νν©λλ€.
- λκ°μ νλΌλ―Έν°λ‘ νΈμΆλ 리λμ ν¨μλ μΈμ λ λκ°μ κ²°κ³Όκ°μ λ°νν΄μΌλ§ ν©λλ€.
'π > γ΄ React' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[React] DOM(λ)μ΄λ? Virtual DOM(κ°μ λ)μ΄λ? (0) | 2020.12.08 |
---|