Flux
Facebook ์์ ํด๋ผ์ด์ธํธ-์ฌ์ด๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ดํ๋ฆฌ์ผ์ด์ ์์ผํ ์ฒ์ด๋ค.
์ด๋ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ ํ์ฉํ์ฌ ๋ทฐ ์ปดํผ๋ํธ๋ฅผ ๊ตฌ์ฑํ๋ React ๋ฅผ ๋ณด์ํ๋ ์ญํ ์ ํ๋ค.
Flux ๊ตฌ์ฑ
Flux ์ดํ๋ฆฌ์ผ์ด์ ์ ์ธ๊ฐ์ง ํต์ฌ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋๋ค.
- Dispatcher
- Stores
- Views (React Component)
์ ์ธ ์์๋ ๊ธฐ์กด MVC (Model - View - Controller) ๊ตฌ์กฐ์๋ ๋ค๋ฅด๋ฉฐ MVC ์๋ ๋ค๋ฅด๊ฒ ๋ฐ์ดํฐ๊ฐ ๋จ๋ฐฉํฅ์ผ๋ก ํ๋ฅธ๋ค.
React View ์์๋ ์ฌ์ฉ์๊ฐ ์ํธ์์ฉ์ ํ ๋, ํด๋น View ๋ ์ค์์ Dispather ๋ฅผ ํตํด Action ์ ์ ํํ๊ฒ ๋๋ค.
์ดํ๋ฆฌ์ผ์ด์ ๋ฐ์ดํฐ์ ๋น์ง๋์ค ๋ก์ง์ ๊ฐ์ง๊ณ ์๋ Store ๋ Action ์ด ์ ํ๋๋ฉด ์ด Action ์ ์ํฅ๋ฒ์์ ์๋ ๋ชจ๋ View ๋ฅผ ๊ฐฑ์ ํ๋ค.
์ฆ View ๊ฐ ์ด๋ค ๋ฐฉ์์ผ๋ก ๊ฐฑ์ ํด์ผ ๋๋์ง ์ผ์ผ์ด ์์ฑํ์ง ์๊ณ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ ํํ์์ ํธ๋ฆฌํ๋ค.
Flux ๋ Store ๋ฅผ ์ด์ฉํ์ฌ ์ ์ด๋ฅผ ์์ ํ ๋ค์ง์๋ค.
์ผ๊ด์ฑ์ ์ ์งํด์ผ ํ๋ค๋ ๋ช
๋ชฉ์ผ๋ก ์ธ๋ถ์ ๊ฐฑ์ ์ ์์กดํ๋ ๋ฐฉ์๊ณผ ๋ฌ๋ฆฌ Store ๋ ๊ฐฑ์ ์ ๋ฐ์๋ค์ด๊ณ ์ ์ ํ ์กฐํํ๋ค.
Store ๋ฐ๊นฅ์ ์๋ฌด๊ฒ๋ ๋์ง ์๋ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ์ ๋๋ฉ์ธ์ ๊ด๋ฆฌํด์ผ ํ ํ์๊ฐ ์์ด์ ธ ์ธ๋ถ์ ๊ฐฑ์ ์ ๋ฐ๋ฅธ ๋ฌธ์ ๋ฅผ ๋ช ํํ๊ฒ ๋ถ๋ฆฌํ ์ ์๋๋ก ๋๋๋ค.
Store ๋ ๋
๋ฆฝ๋ ๊ณต๊ฐ์ ๊ฐ์ง๊ณ ์์ด ์ง์ ์ ์ธ setter()
๋ฉ์๋๊ฐ ์๋ ๋์ Dispather ์ ๋ฑ๋กํ ์ฝ๋ฐฑ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ฒ๋๋ค.
๋ฐ์ดํฐ์ ํ๋ฆ
Flux ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํฐ๋ ๋จ๋ฐฉํฅ์ผ๋ก ํ๋ฅธ๋ค.
๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ Flux ํจํด์ ํต์ฌ์ธ๋ฐ Flux ํ๋ก๊ทธ๋๋จธ์ ์ ์ผ ๋ฉํ ๋ชจ๋ธ์ด ๋๋ค.
Dispather, Store, View ๋ ๋
๋ฆฝ์ ์ธ ๋
ธ๋๋ก ์
๋ ฅ๊ณผ ์ถ๋ ฅ์ด ์์ ํ ๊ตฌ๋ถ๋๋ค.
Action ์ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๊ณ ์๋ ๊ฐ๋จํ ๊ฐ์ฒด๋ก Type ํ๋กํํฐ๋ก ๊ตฌ๋ถ๋๋ค.
- Action
- ๋ชจ๋ ๋ฐ์ดํฐ๋ Dispather ๋ฅผ ํตํด ํ๋ฅด๋ฉฐ, Action ์ Dispather ์๊ฒ Action Creator ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋๋ฐ ๋๋ถ๋ถ์ Action ์ View ์์ ์ฌ์ฉ์์ ์ํธ์์ฉ ๊ณผ์ ์์ ๋ฐ์ํ๋ค.
- Dispather
- Dispather ๋ Store ์ ๋ฑ๋กํ๊ธฐ ์ํ ์ฝ๋ฐฑ์ ์คํํ ์ดํ์ Action ์ ๋ชจ๋ Store ๋ก ์ ๋ฌํ๋ค.
- Store
- ๋ฑ๋กํ ์ฝ๋ฐฑ์ ํ์ฉํด Store ๋ ๊ด๋ฆฌํ๊ณ ์๋ ์ํ ์ค ์ด๋ค Action ์ด๋ผ๋ ๊ด๋ จ์ด ์๋ค๋ฉด ์ ๋ฌํด์ค๋ค.
- Store ๋ Change ์ด๋ฒคํธ๋ฅผ Controller-View ์๊ฒ ์๋ ค์ฃผ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ก ๋ฐ์ดํฐ ๊ณ์ธต์์์ ๋ณํ๊ฐ ์ผ์ด๋๋ค.
- View
- Controller-View ๋ ์ด ์ด๋ฒคํธ๋ฅผ ๋ฃ๊ณ ์๋ค๊ฐ ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ์๋ Store ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.
- Controller-View ๋ ์ค์ค๋ก
setState()
๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ ์ปดํฌ๋ํธ ํธ๋ฆฌ์ ์ํด ์๋ ์์ ๋ ธ๋ ๋ชจ๋๋ฅผ ๋ค์ ๋๋๋ง ํ๊ฒ ํ๋ค.
Action Creator ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ๊ณตํ๋ Helper ๋ฉ์๋๋ก ๋ฉ์๋ ํ๋ผ๋ฏธํฐ์์ Action ์ ์์ฑํ๊ณ Type ์ ์ค์ ํ๊ฑฐ๋ Dispather ์๊ฒ ์ ๊ณตํ๋ ์ญํ ์ ํ๋ค.
๋ชจ๋ Action ์ Store ๊ฐ Dispather ์ ๋ฑ๋กํด๋ ์ฝ๋ฐฑ์ ํตํด ๋ชจ๋ Store ์ ์ ์ก๋๋ค.
Action ์ ๋ํ ์๋ต์ผ๋ก Store ๊ฐ ์ค์ค๋ก ๊ฐฑ์ ์ ํ ๋ค์์๋ ์์ ์ด ๋ณ๊ฒฝ๋์๋ค๊ณ ๋ชจ๋์๊ฒ ์๋ฆฐ๋ค.
Controller-View ๊ฐ ๋ณ๊ฒฝ์ด๋ฒคํธ๋ฅผ ๋ฃ๊ณ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ Store ์์ ๊ฐ์ ธ์จ ํ ๋ชจ๋ ํธ๋ฆฌ์ ์๋ ์์๋ทฐ์๊ฒ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ค.
์ด Flux ๊ตฌ์กฐ๋ ํจ์ํ ๋ฐ์ ํ๋ก๊ทธ๋๋ฐ์ ๋ค์ ์ฌํํ๋ ๊ฒ์ ์ฝ๊ฒ ๋ง๋ค๊ฑฐ๋ ๋ฐ์ดํฐ-ํ๋ฆ ํ๋ก๊ทธ๋๋ฐ, ํ๋ฆ ๊ธฐ๋ฐ ํ๋ก๊ทธ๋๋ฐ์ ๋ง๋๋๋ฐ ์ฝ๋๋ก ๋๋๋ค.
์ดํ๋ฆฌ์ผ์ด์
์์ ํ๋ฅด๋ ๋ฐ์ดํฐ ํ๋ฆ์ด ์๋ฐฉํฅ ๋ฐ์ธ๋ฉ์ด ์๋ ๋จ๋ฐฉํฅ์ผ๋ก ํ๋ฅด๊ธฐ ๋๋ฌธ์ด๋ค.
์ดํ๋ฆฌ์ผ์ด์
์ ์ํ๋ ๋ชจ๋ Store ์์ ๊ด๋ฆฌ๋๊ณ ์ดํ๋ฆฌ์ผ์ด์
์ ๋ค๋ฅธ ๋ถ๋ถ๊ณผ Dispather ์ ์ํด ๋๊ธฐ์ ์ผ๋ก ๋ณ๊ฒฝ๋๋ ๋ฐฉ๋ฒ์ผ๋ก ๊ด๋ฆฌ๋๋ค.
์ด์ ๊ฐ์ ๊ตฌ์กฐ๋ ์ฐ๋ฆฌ์ ์ดํ๋ฆฌ์ผ์ด์
์ด ํจ์ํ ๋ฐ์ ํ๋ก๊ทธ๋๋ฐ (Functional Reactive Programming) ์ด๋ ๋ ์ธ๋ถ์ ์ผ๋ก ๋ฐ์ดํฐ-ํ๋ฆ ํ๋ก๊ทธ๋๋ฐ (Data-Flow Programming) ๋๋ ํ๋ฆ ๊ธฐ๋ฐ ํ๋ก๊ทธ๋๋ฐ (Flow-based Programming) ์ ์ฐ์ํ๊ฒ ํ๋ค๋ ์ฌ์ค์ ์ฝ๊ฒ ๋ ์ฌ๋ฆฌ๊ฒ ํ๋ค.
์ฆ ๋ฐ์ดํฐ์ ํ๋ฆ์ด ์๋ฐฉํฅ ๋ฐ์ธ๋ฉ์ด ์๋ ๋จ์ผ ๋ฐฉํฅ์ผ๋ก ํ๋ฅธ๋ค.
์ดํ๋ฆฌ์ผ์ด์
์ ์ํ๋ store์ ์ํด ๊ด๋ฆฌ๋ฅผ ํด์ ์ดํ๋ฆฌ์ผ์ด์
์ ๋ค๋ฅธ ๋ถ๋ถ๋ค๊ณผ ๊ฒฐํฉ๋๋ฅผ ๊ทนํ ๋ฎ์ถ ์ํ๋ก ์ ์ง๋ ์ ์๋ค.
Store ์ ์ฌ์ด์์ ์์กด์ฑ์ด ์๊ธด๋ค๊ณ ํด๋ Dispachter ์ ์ํด ์๊ฒฉํ ์๊ณ๊ฐ ์ ์ง๋์ด ๋๊ธฐ์ ์ผ๋ก ๊ฐฑ์ ๋๋ ๋ฐฉ์์ผ๋ก ๊ด๋ฆฌ๋๋ค.
์๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ์ฐ์์ ์ธ ๊ฐฑ์ ์ด ๋ฐ์ํ๊ณ ๊ฐ์ฒด ํ๋์ ๋ณ๊ฒฝ์ด ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ๋ณ๊ฒฝํ๊ฒ ๋์ด ์ค์ ํ์ํ ์
๋ฐ์ดํธ๋ณด๋ค ๋ ๋ง์ ๋ถ๋์ ์คํํ๊ฒ ๋๋ค.
์ดํ๋ฆฌ์ผ์ด์
์ ๊ท๋ชจ๊ฐ ์ปค์ง๋ฉด ๋ฐ์ดํฐ์ ์ฐ์์ ์ธ ๊ฐฑ์ ์ด ๋๋ ์ํฉ์์๋ ์ฌ์ฉ์ ์ํธ์์ฉ์ ๊ฒฐ๊ณผ๊ฐ ์ด๋ค ๋ณํ๋ฅผ ๋ง๋๋์ง ์์ธกํ๋๋ฐ ์ด๋ ค์์ง๋ค.
๊ฐฑ์ ์ผ๋ก ์ธํ ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ด ๋จ ํ ์ฐจ๋ก๋ง ์ด๋ค์ง๋ค๋ฉด ์ ์ฒด ์์คํ
์ ์ข ๋ ์์ธก ๊ฐ๋ฅํ๊ฒ ๋๋ค.
๋จ์ผ Dispather
Dispatcher ๋ Flux ์ดํ๋ฆฌ์ผ์ด์ ์ ์ค์ ํ๋ธ๋ก ๋ชจ๋ ๋ฐ์ดํฐ์ ํ๋ฆ์ ๊ด๋ฆฌํ๋ค.
๋ณธ์ง์ ์ผ๋ก Store ์ ์ฝ๋ฐฑ์ ๋ฑ๋กํ๋๋ฐ ์ฐ์ด๊ณ Action ์ Store ์ ๋ฐฐ๋ถํด์ฃผ๋ ๊ฐ๋จํ ์๋ ๋ฐฉ์์ผ๋ก ๊ทธ ์์ฒด๊ฐ ํน๋ณํ๊ฒ ๋๋ํ ๊ฒ์ ์๋๋ค.
๊ฐ๊ฐ์ Store ๋ฅผ ์ง์ ๋ฑ๋กํ๊ณ ์ฝ๋ฐฑ์ ์ ๊ณตํ๋ค.
Action Creator ๊ฐ ์๋ก์ด Action ์ด ์๋ค๊ณ Dispatcher ์๊ฒ ์๋ ค์ฃผ๋ฉด ์ดํ๋ฆฌ์ผ์ด์ ์ ์๋ ๋ชจ๋ Store๋ ํด๋น Action์ ์์ ๋ฑ๋กํ callback์ผ๋ก ์ ๋ฌ ๋ฐ๋๋ค.
์ดํ๋ฆฌ์ผ์ด์
์ ๊ท๋ชจ๊ฐ ์ปค์ง๊ฒ ๋๋ฉด Dispachter ์ ์ญํ ์ ๋์ฑ ํ์์ ์ด๋ค.
๋ฐ๋ก Store ๊ฐ์ ์์กด์ฑ์ ํน์ ์ ์ธ ์์๋ก ์ฝ๋ฐฑ์ ์คํํ๋ ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ด๋ค.
Store๋ ๋ค๋ฅธ store์ ์
๋ฐ์ดํธ๊ฐ ๋๋ ๋๊น์ง ์ ์ธ์ ์ผ๋ก ๊ธฐ๋ค๋ฆด ์ ์๊ณ ๋๋๋ ์์์ ๋ฐ๋ผ ์ค์ค๋ก ๊ฐฑ์ ๋๋ค.
Store
Store ๋ ์ดํ๋ฆฌ์ผ์ด์
์ ์ํ์ ๋ก์ง์ ํฌํจํ๊ณ ์๋ค.
Store์ ์ญํ ์ ์ ํต์ ์ธ MVC์ ๋ชจ๋ธ๊ณผ ๋น์ทํ์ง๋ง ๋ง์ ๊ฐ์ฒด์ ์ํ๋ฅผ ๊ด๋ฆฌํ ์ ์๋๋ฐ ORM ๋ชจ๋ธ์ด ํ๋ ๊ฒ์ฒ๋ผ ๋จ์ผ ๋ ์ฝ๋์ ๋ฐ์ดํฐ๋ฅผ ํํํ๋ ๊ฒ๋ ์๋๊ณ Backbone์ ์ปฌ๋์
๊ณผ๋ ๋ค๋ฅด๋ค.
store๋ ๋จ์ํ ORM ์คํ์ผ์ ๊ฐ์ฒด ์ปฌ๋์
์ ๊ด๋ฆฌํ๋ ๊ฒ์ ๋์ด ์ดํ๋ฆฌ์ผ์ด์
๋ด์ ๊ฐ๋ณ์ ์ธ ๋๋ฉ์ธ ์์ ์ดํ๋ฆฌ์ผ์ด์
์ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ค.
์๋ฅผ ๋ค๋ฉด, Facebook์ ๋์๋ณด๊ธฐ ํธ์ง๊ธฐ ์์ ์ง์์ ์ผ๋ก ์ฌ์๋ ์๊ฐ๊ณผ ํ๋ ์ด์ด ์ํ๋ฅผ ์ง์์ ์ผ๋ก ์ถ์ ํ๊ธฐ ์ํด TimeStore ๋ฅผ ํ์ฉํ๋ค.
๊ฐ์ ์ดํ๋ฆฌ์ผ์ด์
์์ ImageStore ๋ ์ด๋ฏธ์ง ์ฝ๋์
์ ์ง์์ ์ผ๋ก ์ถ์ ํ๋ค.
TodoMVC ์์ ์ TodoStore ๋ ๋น์ทํ๊ฒ ํ ์ผ ํญ๋ชฉ์ ์ฝ๋์
์ ๊ด๋ฆฌํ๋ค.
Store๋ ๋ ๋ชจ๋ธ ์ปฌ๋์ ์ ํน์ง์ ๋ณด์ฌ์ฃผ๋ ๊ฒ๊ณผ ๋์์ ์ฑ๊ธํด ๋ชจ๋ธ์ ๋ ผ๋ฆฌ์ ๋๋ฉ์ธ์ผ๋ก ์ญํ ์ ํ๋ค.
์์์ ์ธ๊ธํ ๊ฒ๊ณผ ๊ฐ์ด store๋ ์์ ์ Dispatcher ์ ๋ฑ๋กํ๊ณ callback์ ์ ๊ณตํ๋ค.
์ด Callback ์ Action ์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ๋๋ค.
Store ์ ๋ฑ๋ก๋ Callback ์ ๋ด๋ถ์์๋ Switch ๋ฌธ์ ์ฌ์ฉํ Action ํ์
์ ํ์ฉํด์ Action ์ ํด์ํ๊ณ Store ๋ด๋ถ ๋ฉ์๋์ ์ ์ ํ๊ฒ ์ฐ๊ฒฐ๋ ์ ์๋ ํ
์ ์ ๊ณตํ๋ค. ์ฌ๊ธฐ์ ๊ฒฐ๊ณผ์ ์ผ๋ก action์ disaptcher๋ฅผ ํตํด store์ ์ํ๋ฅผ ๊ฐฑ์ ํ๋ค. store๊ฐ ์
๋ฐ์ดํธ ๋ ํ, ์ํ๊ฐ ๋ณ๊ฒฝ๋์๋ค๋ ์ด๋ฒคํธ๋ฅผ ์ค๊ณํ๋ ๊ณผ์ ์ผ๋ก View ์๊ฒ ์๋ก์ด ์ํ๋ฅผ ๋ณด๋ด์ฃผ๊ณ View ์ค์ค๋ก ์
๋ฐ์ดํธํ๊ฒ ๋ง๋ ๋ค.
View & Controllers-View
React ๋ ์กฐํ๋กญ๊ณ ์์ ๋ก์ด ํํ๋ก ๋ค์ ๋๋๋ง ํ ์ ์๋ View ๋ฅผ View ๋ ์ด์ด๋ก ์ ๊ณตํ๋ค.
๋ณต์กํ View ์๊ณ์ ์์๋ฅผ ์ดํด๋ณด๋ฉด Store ์ ์ํด ์ด๋ฒคํธ๋ฅผ ์ค๊ณํ ์ ์๋ ํน๋ณํ ์ข
๋ฅ์ View๊ฐ ์๋ค.
์ด View ๋ฅผ Controller-View ๋ผ๊ณ ๋ถ๋ฅด๋๋ฐ Store ์์ ๋ฐ์ดํฐ๋ฅผ ์ป์ ์ ์๋ glue ์ฝ๋๋ฅผ ์ ๊ณตํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์๊ณ๋๋ก ์์๋ค์๊ฒ ์ ๋ฌํ๋๋ก ๋๋๋ค.
ํ์ด์ง์ ๊ด๋ฒ์ํ ์์ญ์ ๊ด๋ฆฌํ๋ Contoller-View ๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค.
Store ์๊ฒ ์ด๋ฒคํธ๋ฅผ ๋ฐ์ผ๋ฉด Store ์ ํผ๋ธ๋ฆญ getter()
๋ฉ์๋๋ฅผ ํตํด ์๋ก ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ฒ์์ผ๋ก ์์ฒญํ๊ฒ ๋๋ค.
๊ทธ ๊ณผ์ ์์ setState()
๋๋ forceUpdate()
๋ฉ์๋๋ฅผ ํธ์ถํ๊ฒ ๋๊ณ ๊ทธ ํธ์ถ ๊ณผ์ ์์ ์์ฒด์ render()
๋ฉ์๋์ ํ์ ๋ชจ๋ ์์์ render()
๋ฉ์๋๋ฅผ ์คํํ๋ค.
์ ์ฒด์ ์ธ Store ์ ์ํ๋ฅผ ๋จ์ผ ๊ฐ์ฒด๋ก ๋ง๋ค์ด ํ์์ ์๋ View ์ ์ ๋ฌํ๊ฒ ๋๋๋ฐ ๋ค๋ฅธ ์์๋ค๋ ํ์ํ ๋ถ๋ถ์ด๋ผ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ค.
๋ํ Controller-View ๋ ์๊ณ์ ์ต์์์์ ๋ง์น Controller ์ ๊ฐ์ ์ญํ ์ ์ง์์ ์ผ๋ก ์ํํด ํ์์ ์๋ View๊ฐ ๊ฐ๋ฅํ ํ ์์ํ๊ฒ, ํจ์์ ์ผ๋ก ์ ์ง๋ ์ ์๋๋ก ํ๋ค.
๋ํ Store ์ ์ ์ฒด ์ํ๋ฅผ ๋จ์ผ ๊ฐ์ฒด๋ก ํ๋ ค ๋ณด๋ด๋๋ฐ ์ด ๋ฐฉ์์ ๊ด๋ฆฌํด์ผ ํ๋ ํ๋กํผํฐ ์๋ฅผ ์ค์ด๋ ํจ๊ณผ๋ ์๋ค.
๋๋๋ก ์ปดํฌ๋ํธ์ ๋จ์ํจ์ ์ ์งํ๊ธฐ ์ํด ์๊ณ ๊น์ ๊ณณ์์ Contoller-Views ๊ฐ ์ถ๊ฐ์ ์ผ๋ก ํ์ํ ๋๊ฐ ์๋ค.
์ค๊ฐ์ Contoller-Views ๋ฅผ ๋ฃ์ผ๋ฉด ํน์ ๋ฐ์ดํฐ ๋๋ฉ์ธ์ ๊ด๊ณ๋ ์๊ณ ์์ญ์ ๊ฐ์ธ์ ๋
๋ฆฝ์ ์ผ๋ก ๋ง๋๋๋ฐ (Encapsulate :: ์บก์ํ) ๋์์ด ๋๋ค.
ํ์ง๋ง ์ฃผ์ํด์ผ ํ ๊ฒ์ ์๊ณ ๋ด์์ ๋ง๋ Controller-View๋ ๋จ์ผ์ ๋ฐ์ดํฐ ํ๋ฆ๊ณผ ์์ถฉํด ์ ์ฌ์ ์ผ๋ก ์๋ก์ด ๋ฐ์ดํฐ ํ๋ฆ์ ์์์ ์์ ์ถฉ๋ํ ์ ์๋ค.
๋ด๋ถ์ Controller-View ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ๊ฒฐ์ ํ ๋์๋ ์ฌ๋ฌ ๋ฐ์ดํฐ ์
๋ฐ์ดํธ์ ํ๋ฆ์ด ์๊ณ์ ๋ค๋ฅธ ๋ฐฉํฅ์ผ๋ก ํ๋ฅด์ง ์๋๋ก ๊ณ ๋ คํด ๋จ์ํจ์ ๊ท ํ์ ์ ์งํด์ผ ํ๋ค.
์ฌ๋ฌ ๋ฐ์ดํฐ๊ฐ ์
๋ฐ์ดํธ ๋๋ฉด ์ด์ํ ํจ๊ณผ๋ฅผ ๋ง๋ค์ด React ์ ๋ ๋๋ง ๋ฉ์๋๊ฐ ๋ค๋ฅธ Controller-View ์ ์ํด ๋ฐ๋ณต์ ์ผ๋ก ์คํ๋์ ๋๋ฒ๊น
์ ์ด๋ ค์์ ๊ฐ์คํ ๊ฐ๋ฅ์ฑ์ด ์๋ค. ๋ด๋ถ Controller-View๋ฅผ ๋ง๋๋ ๊ฒ์ ๊ฒฐ์ ํ ๋, ๋ฐ์ดํฐ๋ฅผ ๊ฐฑ์ ํ๊ธฐ ์ํด ์๊ณ์์ ์ฌ๋ฌ ๋ฐฉํฅ์ผ๋ก ํ๋ฅด๋ ๋ณต์ก์ฑ์ ๋ฐํด ๋จ์ํ ์ปดํฌ๋ํธ์ ์ด์ ์์ ๊ท ํ์ ์ฐพ์์ผ ํ๋ค.
์ฌ๋ฌ ๋ฐฉํฅ์ผ๋ก์ ๋ฐ์ดํฐ ๊ฐฑ์ ์ ์ด์ํ ํจ๊ณผ๋ฅผ ๋ง๋ค ์ ์๋ค.
ํนํ React์ ๋ ๋ ๋ฉ์๋๋ ์ฌ๋ฌ Controller-View ๋ฅผ ๊ฐฑ์ ํ๊ธฐ ์ํด ๋ฐ๋ณต์ ์ผ๋ก ์คํ์ด ๋์ด๋ฒ๋ ค ๋๋ฒ๊น
์ ์ด๋ ค์์ ๊ฐ์คํ ์๋ ์๋ค.
Action
Dispatcher ๋ Action ์ ํธ์ถํด ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๊ณ Store ๋ก ์ ๋ฌํ ์ ์๋๋ก ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.
Action ์ ์์ฑ์ Dispatcher ๋ก Action ์ ๋ณด๋ผ ๋ ์๋ฏธ์๋ Helper ๋ฉ์๋๋ก ํฌ๊ฐ์ง๋ค.
TODO ์ดํ๋ฆฌ์ผ์ด์
์์ ํ ์ผ ์์ดํ
์ ๋ฌธ๊ตฌ๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ถ๋ค๊ณ ๊ฐ์ ํ์.
updateText(todoId, newText)
์ ๊ฐ์ ํจ์ ์๊ทธ๋์ณ๋ฅผ ์ด์ฉํด TodoActions ๋ชจ๋ ๋ด์ Action ์ ๋ง๋ ๋ค.
์ด ๋ฉ์๋๋ View ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ก๋ถํฐ ํธ์ถ๋์ด ์คํํ ์ ์๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ก ์ฌ์ฉ์ ์ํธ์์ฉ์ ์๋ตํ ์ ์๊ฒ ๋๋ค.
์ด Action Creator ๋ฉ์๋๋ Type ์ ์ถ๊ฐํ ์ ์๋ค.
์ด Type ์ ์ด์ฉํด Action ์ด Store์์ ํด์๋ ์ ์๋๋ก, ์ ์ ํ ์๋ต์ด ๊ฐ๋ฅํ๋๋ก ํ๋ค.
์์์์์ ๊ฐ์ด TODO_UPDATE_TEXT
์ ๊ฐ์ ์ด๋ฆ์ ํ์
์ ์ฌ์ฉํ๋ค.
Action ์ ์๋ฒ์ ๊ฐ์ ๋ค๋ฅธ ์ฅ์์์ ์ฌ ์ ์๋ค.
์๋ฅผ ๋ค๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ด๊ธฐํ ํ ๋ ์ด๋ฐ ๊ณผ์ ์ด ๋ฐ์ํ ์ ์๋ค.
๋ํ ์๋ฒ์์ ์๋ฌ ์ฝ๋๋ฅผ ๋ฐํํ๊ฑฐ๋ ์ดํ๋ฆฌ์ผ์ด์
์ด ์ ๊ณต๋ ํ์ ์
๋ฐ์ดํธ๊ฐ ์์ ๋ ๋ํ๋ ์ ์๋ค.
์ฐธ๊ณ ์๋ฃ