์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- react-query
- ์๊ณ ๋ฆฌ์ฆ
- IT๊ฐ๋ฐ์บ ํ
- ๋คํธ์ํฌ
- typescript
- CS
- react
- ip
- ์ค๋ ๋
- ํด์
- #ํ๋ก์ ํธ์บ ํ #ํ๋ก์ ํธ์บ ํํ๊ธฐ #์ ๋ฐ๋ฏธ #์ค๋์ดํผํฉํ ๋ฆฌ #์ ์ง์ฝํฌ๋น #์ธ์ฌ์ด๋์์ #IT๊ฐ๋ฐ์บ ํ #๊ฐ๋ฐ์๋ถํธ์บ ํ #๋ฆฌ์กํธ #react #๋ถํธ์บ ํ #๋ฆฌ์กํธ์บ ํ
- Algorithm
- ๋ฉ๋ชจ๋ฆฌ
- App Runner
- javascript
- ์ธ์ฌ์ด๋์์
- ๊ฐ๋ฐ์๋ถํธ์บ ํ
- BFS
- ํ์ ์คํฌ๋ฆฝํธ
- ์ ์ง์ฝํฌ๋น
- ํ๋ก์ ํธ์บ ํ
- ๋ฆฌ์กํธ
- ํ๋ก๊ทธ๋๋จธ์ค
- ์ค๋์ดํผํฉํ ๋ฆฌ
- ์๋ฐ์คํฌ๋ฆฝํธ
- html
- React.js
- ์ ๋ฐ๋ฏธ
- cs #๋คํธ์ํฌ
- ํ๋ก์ธ์ค
- Today
- Total
Bin's Blog
Flux ํจํด ๋ณธ๋ฌธ
๐ค Flux ํจํด์ด๋?
Flux ํจํด์ 2014๋ ํ์ด์ค๋ถ F8 ์ปจํผ๋ฐ์ค์์ ๋ฐํ๋ ์ํคํ ์ฒ๋ก, Client-Side ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋์์ธ ํจํด์ด๋ค.
๋ฑ์ฅ ๋ฐฐ๊ฒฝ
ํ์ด์ค๋ถ(ํ ๋ฉํ)์ ์ Flux ํจํด์ด ํ์ํ์๊น? ๋ต์ ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฐ์ดํฐ ํ๋ฆ์ ์ผ๊ด์ฑ ์๊ฒ ๊ด๋ฆฌํจ์ผ๋ก์จ ํ๋ก๊ทธ๋จ์ ์์ธก ๊ฐ๋ฅ์ฑ์ ๋์ด๊ธฐ ์ํจ์ด์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ํ MVC ํจํด์ ๋จ์ ์ ๋ณด์ํ๊ธฐ ์ํด์๋ค.
๋จผ์ MVC ํจํด์ ์์๋ณด์.
MVC๋ Model, View, Controller์ ์ฝ์์ด๋ค. Model์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ,
Controller๋ฅผ ์ด์ฉํ์ฌ Model ๋ฐ์ดํฐ๋ฅผ ์์ฑ / ์กฐํ / ์์ / ์ญ์ (CRUD)ํ๊ณ , ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ View์ ์ถ๋ ฅ๋๋ฉด์ ์ฌ์ฉ์์๊ฒ ์ ๋ฌ๋์ด ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ค.
๋ํ ์ค์ํ ์ ์ ์ฌ์ฉ์๊ฐ View๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ๋ฉด View ์ญ์ Model์ ์ ๋ฐ์ดํธ ํ ์ ์๋ค๋ ์ ์ ๋๋ค. ์ฆ ๋ฐ์ดํฐ๊ฐ ์๋ฐฉํฅ์ผ๋ก ํ๋ฅผ ์ ์๋ค.
์ด ํจํด์ ๋ฌธ์ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ท๋ชจ๊ฐ ์ปค์ง์๋ก ๋ฐ์ดํฐ ํ๋ฆ์ ๋ณต์ก๋๊ฐ ๋ฌด์ง๋ง์งํ๊ฒ ๋์ด๋๋ค.
์๋ฅผ ๋ค์ด, ์นผ๋ผ ๊ฒ์ํ์ ๋ง๋ ๋ค๊ณ ์น์, ์ด ๊ฒ์ํ์ UI์ ๊ฐ์ฅ ํฐ ํน์ง์ ์์ ์ ์ต๊ทผ์ ๋จ๊ธด ๋๊ธ์ด ์ฐ์ธก ์ฌ์ด๋๋ฐ์ ์ค์๊ฐ์ผ๋ก ๋ฌ๋ค.
๋ง์ผ ์ ์ A๊ฐ ์ ๊ธ์ ์ฐ๊ณ ์ ์ B๊ฐ ๋๊ธ์ ์์ฑํ๋๋ฐ, ๋ง์์ด ๋ฐ๋ A๊ฐ ๊ธ์ 5๋ถ๋ง์ ์ญ์ ํ๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ๊ณต๊ต๋กญ๊ฒ๋ B๊ฐ ์ฌ์ดํธ๋ฅผ ๋ ๋์ง๋ ์๊ณ ์๋ก๊ณ ์นจ๋ ํ์ง ์์ ์ฑ ์ฐฝ์ ๋ด๋ฒ๋ ค๋๋ค๋ฉด, ์ด ๊ฒ์ํ์ B์ ๋๊ธ์ด ์ง์์ก์์ ๋ฐ์ํ ์ ์์๊น?
MVC ํจํด์ ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ํ๊ฒ ์ ํํ๊ธฐ ์ด๋ ต๋ค. ๋ชจ๋ธ์ด ๋์ด๋ ์๋ก ์ ํํด์ผ ํ ๋์๋ ํจ๊ป ๋์ด๋๊ธฐ ๋๋ฌธ์ด๋ค.
ํ๋์ ํฌ์คํธ๊ฐ ์ญ์ ๋๋ฉด ํฌ์คํธ์ ๋ธ๋ ค ์๋ ๊ฐ ๋๊ธ๋ ํจ๊ป ์ญ์ ๋ ํ ๋ฐ, ์ด๋ ๋๊ธ์ ์์ด๋ฒ๋ฆฐ ๊ฐ ์ ์ ์ ๋๊ธ ์ฌ์ด๋๋ฐ์๋ ๋ณ๊ฒฝ์ฌํญ์ด ์ ํ๋์ด์ผ ํ๋ค.
MVC ํจํด์์๋ ์ฌ์ด๋๋ฐ์ ํค๋์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๋ชจ๋ธ๋ค์ด ํฌ์คํธ ๋ชจ๋ธ์ ํญ์ ์ฃผ์ํ๊ฒ ๋ง๋ค๊ฒ ๋ ๊ฑฐ๊ณ ์ฝ๋๋ ํจ๊ป ๋ณต์กํด์ง ๊ฒ์ด๋ค.
๋ ์ปค๋ค๋ ๋ฌธ์ ๋ ๊ฐ ๋ชจ๋ธ์์ ๋ฐ์ํ ์ด๋ฒคํธ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด๋ก ๋ฌด์ฐจ๋ณ์ ์ผ๋ก ๋ฒ์ ธ๋๊ฐ ๋ ์ด๋ค ๋ณํ๊ฐ ์ผ์ด๋ ์ง ์์ธกํ ์ ์๋ค.
ํ์ด์ค๋ถ์ ์ด ๋ฌธ์ ์ ํด๊ฒฐ ๋ฐฉ์์ผ๋ก ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ ๊ฐ์ง๋ Flux ํจํด์ ๊ณ ์ํด๋๋ค.
Flux ํจํด์ด๋
Flux๋ ์ฌ์ฉ์์ ์ ๋ ฅ์ ๊ธฐ๋ฐ์ผ๋ก Action์ ๋ง๋ค๊ณ Action์ Dispatcher์ ์ ๋ฌํ์ฌ Store(Model)์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ ๋ค View์ ๋ฐ์ํ๋ ๋จ๋ฐฉํฅ์ ํ๋ฆ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋๋ ์ํคํ ์ฒ์ด๋ค.
Flux ํจํด์ ๊ฐ ์์๋ค์ ํ๋์ฉ ์์๋๋ก ์ดํด๋ณด์
Action / Action Creator
Action์ ๋ฐ์ดํฐ์ ์ํ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ ๋ช ๋ น์ด ์นด๋์ ๊ฐ๋ค. Action Creator๋ฉ์๋๋ ์๋ก ๋ฐ์ํ Action์ ํ์ (type)๊ณผ ์๋ก์ด ๋ฐ์ดํฐ(payload)๋ฅผ ๋ฌถ์ด Dispatcher์๊ฒ ์ ๋ฌํ๋ค.
{
type: 'SET_DATA',
data: {
'name': 'Hobin',
'age': 27
}
}
Dispatcher
Dispatcher๋ ์ก์ ๋ฉ์์ง๋ฅผ ๊ฐ์งํ๋ ์๊ฐ ๊ทธ๊ฒ์ ๊ฐ ์คํ ์ด์ ์ ๋ฌํ๋ค. ๋ชจ๋ ๋ฐ์ดํฐ์ ํ๋ฆ์ ๊ด๋ฆฌํ๋ ์ค์ ํ๋ธ๋ค. Dispatcher์๋ Store๋ค์ด ๋ฑ๋กํด๋์ Action ํ์ ๋ง๋ค ์ฝ๋ฐฑ ํจ์๋ค์ด ์กด์ฌํ๋ค. Action์ ๊ฐ์งํ๋ฉด Store๋ค์ด ๊ฐ ํ์ ์ ๋ง๋ Store์ ์ฝ๋ฐฑ ํจ์๋ฅผ ์คํํ๋ค. Store์ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๋ ๊ฒ์ ์ค์ง Dispatcher๋ฅผ ํตํด์๋ง ๊ฐ๋ฅํ๋ค. ๋ํ Store๊ฐ ์๋ก๋ฅผ ์์กดํ๊ณ ์๋ค๋ฉด(ํ์์ ๊ฐ์ธ์ ๋ณด๋ฅผ ๋ด์ ์คํ ์ด์ ๋ชจ๋ ํ์์ ์ํ ์ ์๋ง์ ๋ด์ ์คํ ์ด) ํน์ ์คํ ์ด๊ฐ ์ ๋ฐ์ดํธ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ฒ ํ๋ waitFor()๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
Store (Model)
Store๋ ์ํ ์ ์ฅ๋ก์ ์ํ์ ์ํ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์ด๋ค ํ์ ์ ์ก์ ์ด ๋ฐ์ํ๋์ง์ ๋ฐ๋ผ ๊ทธ์ ๋ง๋ ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ์ํํ๋ ์ฝ๋ฐฑ ํจ์๋ฅผ Dispatcher์ ๋ฑ๋กํ๋ค. Dispatcher์์ ์ฝ๋ฐฑ ํจ์๋ฅผ ์คํํ์ฌ ์ํ๊ฐ ๋ณ๊ฒฝ๋๋ฉด View์๊ฒ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์์์ ์๋ฆฐ๋ค.
View
View๋ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. Store์์ View์๊ฒ ์ํ๊ฐ ๋ณ๊ฒฝ๋์์ ์๋ ค์ฃผ๋ฉด ์ต์์ View(Controller View)๋ Store์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ์์ View์๊ฒ ๋ด๋ ค๋ณด๋ธ๋ค. ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ View๋ ํ๋ฉด์ ๋ฆฌ๋ ๋๋งํ๋ค. ๋ํ ์ฌ์ฉ์๊ฐ View์ ์ด๋ ํ ์กฐ์์ ํ๋ฉด ๊ทธ์ ํด๋นํ๋ Action์ ์์ฑํ๋ค.
๊ฐ ์์๋ ๋จ๋ฐฉํฅ ํ๋ฆ์ ๋ฐ๋ผ ์์๋๋ก ์ญํ ์ ์ํํ๊ณ , View๋ก๋ถํฐ ์๋ก์ด ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ด ์๊ธฐ๋ฉด ์ฒ์๋ถํฐ ๋ค์ ์ด ์์๋๋ก ์คํํ๋ค. ์ด๋ ๊ฒ ํจ์ผ๋ก์จ ์์ธ ์์ด ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ค.
๐ ์ฐธ๊ณ ํ๋ฉด ์ข์ ์๋ฃ
'React.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
React-Query๋?(2ํธ) (0) | 2023.09.15 |
---|---|
React-Query๋?(1ํธ) (0) | 2023.09.11 |
[React.js] ์ค๋์ ๋๋ฒ๊น (0) | 2023.08.01 |
์ค๋์ React (0) | 2023.07.14 |
์ค๋์ React (0) | 2023.05.21 |