https://github.com/dl0312/state_management_tutorial
πΆ It's time to study Redux, MobX, RxJS
https://github.com/dl0312/state_management_tutorial
mobx react redux rxjs
Last synced: 15 days ago
JSON representation
πΆ It's time to study Redux, MobX, RxJS
- Host: GitHub
- URL: https://github.com/dl0312/state_management_tutorial
- Owner: dl0312
- Created: 2019-06-26T10:47:50.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-01-04T07:30:05.000Z (about 2 years ago)
- Last Synced: 2024-10-11T21:25:21.535Z (4 months ago)
- Topics: mobx, react, redux, rxjs
- Language: JavaScript
- Homepage:
- Size: 948 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 48
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# π©βπ» State Management Tutorial
μν κ΄λ¦¬μ κΈ°μ΄λ₯Ό 곡λΆν©λλ€.
## Redux λλ MobXλ₯Ό ν΅ν μν κ΄λ¦¬
### 1. μν κ΄λ¦¬ λΌμ΄λΈλ¬λ¦¬μ λ―Έν
μν κ΄λ¦¬ λΌμ΄λΈλ¬λ¦¬λ 무쑰건 νμν κ²μ μλλ€. νμ§λ§ κ·λͺ¨κ° ν° μ±μμλ μλ κ²μ΄ νΈν©λλ€.
> κΈλ‘λ² μν κ΄λ¦¬λ, μ»΄ν¬λνΈ κ°μ λ°μ΄ν° κ΅λ₯ νΉν λΆλͺ¨ μμ κ΄κ³κ° μλ μ»΄ν¬λνΈλΌλ¦¬μ λ°μ΄ν° κ΅λ₯λ₯Ό νλ κ²μ μλ―Έν©λλ€.
μν κ΄λ¦¬ λΌμ΄λΈλ¬λ¦¬λ₯Ό λͺ¨λ₯΄κ³ μγ μ°λ κ²κ³Ό μκ³ μμ°λ κ²μ λ§€μ° λ€λ¦ λλ€.
μν κ΄λ¦¬ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©ν΄μΌνλ μ΄μ1. μν μ λ°μ΄νΈ λ‘μ§μ λΆλ¦¬
볡μ‘ν μν μ λ°μ΄νΈ λ‘μ§λ€μ μ»΄ν¬λνΈμμ λΆλ¦¬νμ¬ μ΄λ₯Ό λͺ¨λνν΄μ μ μ§λ³΄μμ±μ λμΌ μ μμ΅λλ€.
2. λ μ¬μ΄ μν κ΄λ¦¬
μ¬λ¬ μ»΄ν¬λνΈλ₯Ό κ±°μ³ propsμ 건λ΄μ£Όλ κ²λ³΄λ€ λ μ½κ² propsμ μ λ¬ν μ μμ΅λλ€.
Redux, MobX λ λ€ μ’μ λΌμ΄λΈλ¬λ¦¬μ΄κ³ λλ¦μ μ₯μ κ³Ό λ¨μ μ΄ μμ΅λλ€. λ λ€ λ°°μ°λ©΄μ μ΅νλ΄ λλ€.## μνκ΄λ¦¬ λΌμ΄λΈλ¬λ¦¬
### 2. Redux μκ° λ° κ°λ μ 리
리λμ€λ₯Ό μ΄μνμ¬ μ¬μ΄ κΈλ‘λ² μν κ΄λ¦¬λ₯Ό ν μ μκ³ , 체κ³μ μ΄κ³ νΈλ¦¬ν μν κ΄λ¦¬λ₯Ό ν μ μλ€.
#### μ‘μ (Action)
μνμ μ΄λ€ λ³νκ° νμνκ² λ λ, μ‘μ μ λ°μμν¨λ€. νλμ κ°μ²΄λ‘ ννλλ©° λ€μκ³Ό κ°μ νμμΌλ‘ μ΄λ£¨μ΄μ Έμλ€.
```js
{
type: "TOGGLE_VALUE";
}
````type`νλλ₯Ό νμμ μΌλ‘ κ°μ§κ³ μμ΄μΌνκ³ , κ·Έ μΈμ κ°λ€μ κ°λ°μ λ§μλλ‘ λ£μ΄μ€ μ μλ€.
```js
{
type: "ADD_TODO",
data: {
id: 0,
text: "리λμ€ λ°°μ°κΈ°"
}
}
``````js
{
type: "CHANGE_INPUT",
text: "μγ΄"
}
```#### μ‘μ μμ±ν¨μ(Action Creator)
μ‘μ μμ±ν¨μλ μ‘μ μ λ§λλ ν¨μ, νλΌλ―Έν°λ₯Ό λ°μμμ μ‘μ κ°μ²΄ ννλ‘ λ§λ€μ΄μ€λ€.
```
function addTodo(data){
return{
type: "ADD_TODO",
data
}
}// arrow functionλ κ°λ₯νλ€.
const changeInput = text => ({
type: "CHANGE_INPUT",
text
})
```#### 리λμ(Reducer)
리λμλ λ³νλ₯Ό μΌμΌν€λ ν¨μλ‘ λκ°μ§μ νλΌλ―Έν°λ₯Ό λ°μμ¨λ€.
```js
function reducer(state, action) {
// μν μ λ°μ΄νΈ λ‘μ§
return alteredState;
}
```리λμλ νμ¬μ μνμ μ λ¬λ°μ μ‘μ μ μ°Έκ³ νμ¬ μλ‘μ΄ μνλ₯Ό λ§λ€μ΄μ λ°ννλ€.
#### μ€ν μ΄(Store)
리λμ€μμλ ν μ ν리μΌμ΄μ λΉ νλμ μ€ν μ΄λ₯Ό λ§λ€κ² λ©λλ€. μ€ν μ΄ μμλ νμ¬ μ± μνμ 리λμκ° λ€μ΄κ°μκ³ μΆκ°μ μΌλ‘ λͺ κ°μ§ λ΄μ₯ν¨μλ€μ΄ μλ€.
#### λμ€ν¨μΉ(Dispatch)
λμ€ν¨μΉλ μ€ν μ΄μ λ΄μ₯ν¨μ μ€ νλλ‘ μ‘μ μ λ°μμν€λ κ²μ΄λΌκ³ μ΄ν΄νλ©΄ λλ€. `dispatch`λΌλ ν¨μμ `dispatch(action)`μ΄λ° μμΌλ‘, μ‘μ μ νλΌλ―Έν°λ‘ μ λ¬νλ€.
νΈμΆμ νλ©΄ μ€ν μ΄λ 리λμ ν¨μλ₯Ό μ€νμμΌμ ν΄λΉ μ‘μ μ μ²λ¦¬νλ λ‘μ§μ΄ μλ€λ©΄ μ‘μ μ μ°Έκ³ νμ¬ μλ‘μ΄ μνλ₯Ό λ§λ€μ΄μ€λ€.
#### ꡬλ (Subscribe)
μ€ν μ΄μ λ΄μ₯ν¨μ μ€ νλλ‘ `subscribe`ν¨μλ ν¨μννμ κ°μ νλΌλ―Έν°λ‘ λ°μμ¨λ€. `subscribe` ν¨μμ νΉμ ν¨μλ₯Ό μ λ¬ν΄μ£Όλ©΄ μ‘μ μ΄ λμ€ν¨μΉ λμμ λλ§λ€ μ λ¬ν΄μ€ ν¨μκ° νΈμΆλλ€.
- [Redux](https://redux.js.org/)
- [MobX](https://github.com/mobxjs/mobx)## π μ°Έκ³ μλ£
- [Redux λ₯Ό ν΅ν React μ΄ν리μΌμ΄μ μν κ΄λ¦¬](https://velopert.com/3365)
- [Redux λλ MobX λ₯Ό ν΅ν μν κ΄λ¦¬](https://velog.io/@velopert/redux-or-mobx)
1. [x] Redux (1) μκ° λ° κ°λ μ 리
2. [x] Redux (2) 리μ‘νΈ μμ΄ μ°λ 리λμ€
3. [x] Redux (3) 리λμ€λ₯Ό 리μ‘νΈμ ν¨κ» μ¬μ©νκΈ°
4. [x] Redux (4) Immutable.js νΉμ Immer.js λ₯Ό μ¬μ©ν λ μ¬μ΄ λΆλ³μ± κ΄λ¦¬
5. [ ] MobX (1) μμνκΈ°
6. [ ] MobX (2) 리μ‘νΈ νλ‘μ νΈμμ MobX μ¬μ©νκΈ°
7. [ ] MobX (3) μ¬νμ μΈ μ¬μ© λ° μ΅μ ν λ°©λ²μ’μ κΈμ μ¨μ£Όμ Veloportλκ» κ°μ¬λ립λλ€.