1. external store
๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ
ํ๋์ ์์คํ ์ ์์ ๋ถํ์ด ๋ชจ์ฌ์ ๋ง๋ค์ด์ง๋ค.
์ฐ๋ฆฌ๋ ์ด๋ฏธ ์์ ์ปดํฌ๋ํธ๋ฅผ ํฉ์ณ์ ๋ ํฐ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋๋ ๋ฐฉ์์ผ๋ก ๊ฐ๋ฐํ๊ณ ์๋ค.
Layered Architecture ์์๋ ์ฌ์ฉ์์๊ฒ ๊ฐ๊น์ด ๊ฒ๊ณผ ๋จผ ๊ฒ์ผ๋ก ๊ตฌ๋ถํ๋ค.
๊ฐ์ฅ ๊ฐ๊น์ด ๊ฑด UI๋ฅผ ๋ค๋ฃจ๋ ๋ถ๋ถ, ๊ทธ ๋ค์์ Business Logic์ ๋ค๋ฃจ๋ ๋ถ๋ถ,
๊ทธ ๋๋จธ์๋ ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ณ ์ ์ฅํ๋ ๋ถ๋ถ์ผ๋ก ๋๋ ์ ์๊ฒ ๋๋ค.
Input โ Process โ Output
๋๋ฆฌ ์๋ ค์ง MVC๋ก ๊ฑฐ์น ๊ฒ ํํํ์๋ฉด ์ด๋ ๋ค. ๊ฐ ๋ถ๋ถ์ ํ๋์ ๊ด์ฌ์ฌ๋ก ๊ฒฉ๋ฆฌ๋จ์ผ๋ก์จ ๋ณต์ก๋๋ฅผ ๋ฎ์ถ๊ฒ ๋๋ค.
Model โ Process
View โ Output
Controller โ Input
Flux Architecture
acebook(ํ Meta)์์ MVC์ ๋์์ผ๋ก ๋ด์ธ์ด ์ํคํ
์ฒ.
2-way binding์ ์ผ์ ๋ ์๊ธธ ์ ์๋ Model-View์ ๋ณต์กํ ๊ด๊ณ(์ ํต์ ์ธ MVC์์ ์ด๋ฐ ์ํฉ์ ์ง์ํ๋ค)๋ฅผ ๊ฒจ๋ฅํด ๋ช ํํ โunidirectional data flowโ๋ฅผ ๊ฐ์กฐํ๋ค.
๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ.
Action โ ์ด๋ฒคํธ/๋ฉ์์ง ๊ฐ์ ๊ฐ์ฒด.
Dispatcher โ (์ฌ๋ฌ) Store๋ก Action์ ์ ๋ฌ. ๋ฉ์์ง ๋ธ๋ก์ปค์ ์ ์ฌํ๋ค.
Store (์ฌ๋ฌ ๊ฐ) โ ๋ฐ์ Action์ ๋ฐ๋ผ ์ํ๋ฅผ ๋ณ๊ฒฝ. ์ํ ๋ณ๊ฒฝ์ ์๋ฆผ.
View โ Store์ ์ํ๋ฅผ ๋ฐ์.
Redux๋ ๋จ์ผ Store๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ ์ข ๋ ๋จ์ํ ๊ทธ๋ฆผ์ ์ ์ํ๋ค.
Action
Store โ dispatch๋ฅผ ํตํด Action์ ๋ฐ๊ณ , ์ฌ์ฉ์๊ฐ ์ ์ํ reducer๋ฅผ ํตํด State๋ฅผ ๋ณ๊ฒฝํ๋ค.
View โ State๋ฅผ ๋ฐ์.
์ํ๋ฅผ UI์ ๋ฐ์ํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ ๋์ผํ๋ค.
3๋จ๊ณ ํ๋ก์ธ์ค๋ก ๊ฑฐ์น ๊ฒ ๋งคํํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
Input โ Action + dispatch
Process โ reducer
Output โ View(React)
External Store
store๊ฐ ๋ฆฌ์กํธ ์์ ์์ง ์๋ค. ์ํคํ ์ฒ์ ์ธ ๊ด์ ์ด ์๋ ๋ฆฌ์กํธ ๊ด์ ์์.
const [count, setCount] = useState(1) ์ด๋ฐ์์ผ๋ก ์ง์ ๊ด๋ฆฌ ์ํ๋ค๋ ๊ฒ.
class ์ปดํฌ๋ํธ ์์ ์๋ forceUpdate๋ฅผ ์ฌ์ฉํด state์๋ ๊ฐ์ ๋ณํ์
๋ฆฌ๋ ๋๋ฅผ ๊ฐ์ ๋ก ํด์คฌ์๋ค.
์ด์ ๋ useReducer๋ฅผ ์ธ ์ ์๊ณ , setState๊ฐ ๋ด๋ถ์ ์ผ๋ก useReducer๋ฅผ ์ฌ์ฉํด ๋ฆฌ๋ ๋ ํ๋ ๊ฒ.
์ปค์คํ hook์ผ๋ก ๋ง๋ ๋ค.
์ด๋ฐ ์ ๊ทผ์ ์ ํ๋ฉด, React๊ฐ UI๋ฅผ ๋ด๋นํ๊ณ , ์์ํ TypeScript(๋๋ JavaScript)๊ฐ ๋น์ฆ๋์ค ๋ก์ง์ ๋ด๋นํ๋, ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ(Separation of Concerns)๋ฅผ ๋ช
ํํ ํ ์ ์๋ค.
์์ฃผ ๋ฐ๋๋ UI ์์์ ๋ํ ํ
์คํธ ๋์ , ์ค๋ ์ ์ง๋๋(๋ฐ๋๋ฉด ์น๋ช
์ ์ธ) ๋น์ฆ๋์ค ๋ก์ง์ ๋ํ ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํด ์ ์ง๋ณด์์ ๋์์ด ๋๋ ํ
์คํธ ์ฝ๋๋ฅผ ์น๋ฐํ๊ฒ ์์ฑํ ์ ์๋ค.
Last updated