1. external store
Last updated
Last updated
ํ๋์ ์์คํ ์ ์์ ๋ถํ์ด ๋ชจ์ฌ์ ๋ง๋ค์ด์ง๋ค.
์ฐ๋ฆฌ๋ ์ด๋ฏธ ์์ ์ปดํฌ๋ํธ๋ฅผ ํฉ์ณ์ ๋ ํฐ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋๋ ๋ฐฉ์์ผ๋ก ๊ฐ๋ฐํ๊ณ ์๋ค.
Layered Architecture ์์๋ ์ฌ์ฉ์์๊ฒ ๊ฐ๊น์ด ๊ฒ
๊ณผ ๋จผ ๊ฒ
์ผ๋ก ๊ตฌ๋ถํ๋ค.
๊ฐ์ฅ ๊ฐ๊น์ด ๊ฑด UI๋ฅผ ๋ค๋ฃจ๋ ๋ถ๋ถ, ๊ทธ ๋ค์์ Business Logic์ ๋ค๋ฃจ๋ ๋ถ๋ถ,
๊ทธ ๋๋จธ์๋ ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ณ ์ ์ฅํ๋ ๋ถ๋ถ์ผ๋ก ๋๋ ์ ์๊ฒ ๋๋ค.
Input โ Process โ Output
๋๋ฆฌ ์๋ ค์ง MVC๋ก ๊ฑฐ์น ๊ฒ ํํํ์๋ฉด ์ด๋ ๋ค. ๊ฐ ๋ถ๋ถ์ ํ๋์ ๊ด์ฌ์ฌ๋ก ๊ฒฉ๋ฆฌ๋จ์ผ๋ก์จ ๋ณต์ก๋๋ฅผ ๋ฎ์ถ๊ฒ ๋๋ค.
Model โ Process
View โ Output
Controller โ Input
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)
store๊ฐ ๋ฆฌ์กํธ ์์ ์์ง ์๋ค. ์ํคํ ์ฒ์ ์ธ ๊ด์ ์ด ์๋ ๋ฆฌ์กํธ ๊ด์ ์์.
const [count, setCount] = useState(1) ์ด๋ฐ์์ผ๋ก ์ง์ ๊ด๋ฆฌ ์ํ๋ค๋ ๊ฒ.
class ์ปดํฌ๋ํธ ์์ ์๋ forceUpdate๋ฅผ ์ฌ์ฉํด state์๋ ๊ฐ์ ๋ณํ์
๋ฆฌ๋ ๋๋ฅผ ๊ฐ์ ๋ก ํด์คฌ์๋ค.
์ด์ ๋ useReducer๋ฅผ ์ธ ์ ์๊ณ , setState๊ฐ ๋ด๋ถ์ ์ผ๋ก useReducer๋ฅผ ์ฌ์ฉํด ๋ฆฌ๋ ๋ ํ๋ ๊ฒ.
์ปค์คํ hook์ผ๋ก ๋ง๋ ๋ค.
์ด๋ฐ ์ ๊ทผ์ ์ ํ๋ฉด, React๊ฐ UI๋ฅผ ๋ด๋นํ๊ณ , ์์ํ TypeScript(๋๋ JavaScript)๊ฐ ๋น์ฆ๋์ค ๋ก์ง์ ๋ด๋นํ๋, ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ(Separation of Concerns)
๋ฅผ ๋ช
ํํ ํ ์ ์๋ค.
์์ฃผ ๋ฐ๋๋ UI ์์์ ๋ํ ํ
์คํธ ๋์ , ์ค๋ ์ ์ง๋๋(๋ฐ๋๋ฉด ์น๋ช
์ ์ธ) ๋น์ฆ๋์ค ๋ก์ง์ ๋ํ ํ
์คํธ ์ฝ๋
๋ฅผ ์์ฑํด ์ ์ง๋ณด์์ ๋์์ด ๋๋ ํ
์คํธ ์ฝ๋๋ฅผ ์น๋ฐํ๊ฒ ์์ฑํ ์ ์๋ค.