Flux ํจํด
Flux ํจํด์ 2014๋ ํ์ด์ค๋ถ F8 ์ปจํผ๋ฐ์ค์์ ๋ฐํ๋ ์ํคํ ์ฒ๋ก, CSR ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋์์ธ ํจํด์ด๋ค. ๋ฐ์ดํฐ ํ๋ฆ์ ์ผ๊ด์ฑ ์๊ฒ ๊ด๋ฆฌํ์ฌ ์์ธก๊ฐ๋ฅ์ฑ์ ๋์ด๊ธฐ ์ํด ๊ณ ์๋์๋ค.
๋ฑ์ฅ ๋ฐฐ๊ฒฝ
๊ธฐ์กด ์ดํ๋ฆฌ์ผ์ด์ ์ด ๋ณดํธ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋์์ธ ํจํด์ MVC ํจํด์ด์๋ค. MVC๋ Model, View, Controller์ ์ฝ์๋ก, Model์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ Controller๋ฅผ ์ด์ฉํด Model์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ค. Model์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด View๋ก ์ ๋ฌ๋์ด ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๊ณ , ์ฌ์ฉ์ ์ญ์ View๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ๋ฉด Model์ ์ ๋ฐ์ดํธ ํ ์ ์๊ฒ ๋๋ค. React์ State Hook์ ๋์ ํด์ ์๊ฐํด๋ณด๋ฉด, Model์ state, Controller๋ ์ํ ๋ณ๊ฒฝ ํจ์๊ฐ ๋๋ค. View์์๋ Controller๋ฅผ ์ด์ฉํด(Lift State Up) Model์ ์ ๋ฐ์ดํธ ํ ์ ์๋ค.
ํ์ง๋ง ์ด๋ฌํ ๋ฐฉ์์ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ท๋ชจ๊ฐ ์ปค์ง๊ณ ์ด์ ๋ฐ๋ผ Model ์ญ์ ๋ง์์ง๋ฉฐ, Model์ด ์ฌ๋ฌ View์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ์ํฉ์ด ๋ฐ์ํ๋ค. View ์ญ์ ์ฌ๋ฌ Model์ ์ ๋ฐ์ดํธ ํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ๊ณ Model์ด ์ ๋ฐ์ดํธ๋์ด View๊ฐ ์ ๋ฐ์ดํธ ๋๋ฉด ๊ทธ View๊ฐ ๋ค์ Model์ ์ ๋ฐ์ดํธ ํ๋ ๋ฑ ๋ณต์กํ ๋ฐ์ดํฐ ํ๋ฆ์ ๊ฐ์ง๊ฒ ๋๋ค. ์ด๋ ๊ฒ ์ฌ๋ฌ Model๊ณผ View๊ฐ ์๋ก์๊ฒ ์ํฅ์ ์ฃผ๋ ์์กด์ฑ์ ๋ง์ด ๊ฐ์ง๊ฒ ๋๋ฉด Model์ ๊ฐฏ์๊ฐ ๋ง์์ง์๋ก ๊ฐ Model์์ ๋ฐ์ํ ์ด๋ฒคํธ๊ฐ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ฒด๋ก ํผ์ ธ๋๊ฐ๋ ์ด๋ฅผ ์์ธกํ๊ธฐ ํ๋ค์ด์ง๋ค.
ํ์ด์ค๋ถ์ โMVC๋ ์ ๋ง ๋ ๊น์งํ ์ฌ์ด์ ๋ณต์กํด์ง๋คโ๊ณ ๋งํ๋ฉฐ ์ด ๋ฌธ์ ์ ํด๊ฒฐ ๋ฐฉ์์ผ๋ก ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ ๊ฐ์ง๋ Flux ํจํด์ ๊ณ ์ํ๋ค.
Flux ํจํด?
Flux๋ ์ฌ์ฉ์ ์ ๋ ฅ์ ๊ธฐ๋ฐ์ผ๋ก Action์ ๋ง๋ค๊ณ Action์ Dispatcher์ ์ ๋ฌํ์ฌ Store(Model)์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ ๋ค View์ ๋ฐ์ํ๋ ๋จ๋ฐฉํฅ ํ๋ฆ์ผ๋ก ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ง๋๋ ์ํคํ ์ฒ์ด๋ค. ๊ฐ ์์๋ค์ ๋จ๋ฐฉํฅ ํ๋ฆ์ ๋ฐ๋ผ ์์๋๋ก ์ญํ ์ ์ํํ๊ณ , View๋ก๋ถํฐ ์๋ก์ด ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ด ์๊ธฐ๋ฉด ์ด๋ฅผ ๋ค์ ์์๋๋ก ์คํํ๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์์ธ ์์ด ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค.
Action
Action์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ ํ์๋ก Dispatcher์๊ฒ ์ ๋ฌ๋๋ ๊ฐ์ฒด์ด๋ค. Action ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ Action Creator๋ฅผ ์ด์ฉํด ์๋ก ๋ฐ์ํ๋ Action์ ํ์ ๊ณผ ์๋ก์ด ๋ฐ์ดํฐ(payload)๋ฅผ ๋ฌถ์ด Dispatcher์๊ฒ ์ ๋ฌํ๋ค.
Dispatcher
Dispatcher๋ ๋ชจ๋ ๋ฐ์ดํฐ ํ๋ฆ์ ๊ด๋ฆฌํ๋ ์ค์ ํ๋ธ๋ก ๋ณผ ์ ์๋ค. Store(Model)์๋ ์ํ์ Action๋ง๋ค ์ํ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ ๋ฉ์๋๊ฐ ์์ฑ๋์ด ์๋๋ฐ, Action์ด Dispatcher๋ก ์ ๋ฌ๋๋ฉด ์ด๋ฅผ ๊ฐ์งํ์ฌ Store๊ฐ ์์ฑํด๋ ์ฝ๋ฐฑํจ์๋ฅผ ์คํํ๋ค.
Store์ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๋ ๊ฒ, ์ฆ Store์ ์์ฑ๋ ์ํ ๋ณ๊ฒฝ ๋ฉ์๋๋ ์ค์ง Dispatcher๋ฅผ ํตํด์๋ง ๊ฐ๋ฅํ๋ค. ๋ํ Store๋ค ์ฌ์ด์ ์์กด์ฑ์ด ์๋ ์ํฉ์์๋ ์์์ ๋ง๊ฒ ์ฝ๋ฐฑํจ์๋ฅผ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํ๋๋ก ๊ด๋ฆฌํ๋ค.
Store (Model)
Store๋ ์ํ ์ ์ฅ์๋ก ์ํ์ ์ํ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์ด๋ค ํ์ ์ Action์ด ๋ฐ์ํ๋์ง์ ๋ฐ๋ผ ๊ทธ์ ๋ง๊ฒ ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ์ํํ๋ ์ฝ๋ฐฑํจ์๋ฅผ Dispatcher์ ์์ฑํ๋ค. Dispatcher์์ ์ฝ๋ฐฑ ํจ์๋ฅผ ์คํํ์ฌ ์ํ๊ฐ ๋ณ๊ฒฝ๋๋ฉด View์๊ฒ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋จ์ ์๋ฆฐ๋ค.
View
View๋ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ก ์๊ฐํ๋ฉด ์ฝ๋ค. Store์์ View์๊ฒ ์ํ๊ฐ ๋ณ๊ฒฝ๋์์์ ์๋ฆฌ๋ฉด ์ต์์ View(Controller View)๋ Store์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ์์ View์๊ฒ ๋ด๋ ค ๋ณด๋ด๊ณ , ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ View๋ ํ๋ฉด์ ๋ฆฌ๋ ๋๋งํ๋ค. ์ฌ์ฉ์๊ฐ View์ ์ด๋ค ์กฐ์์ ํ๊ฒ ๋๋ฉด ๊ทธ์ ํด๋น๋ Action์ ์์ฑํ๋ค.
Uploaded by N2T