μ Flux μν€ν μ³λ κ°λ μ΄ λμμκΉ?
Facebookμμ κ°λ°ν μν€ν μ³μ΄μ, λ¨λ°©ν₯ λ°μ΄ν° νλ¦μ κ°μ§λ μν€ν μ³
Flux μν€ν μ³λ₯Ό μκΈ° μ μ, MVC μν€ν μ³μ λν΄μ
μ°μ MVC μν€ν μ³λ μλ°©ν₯μΌλ‘ λ°μ΄ν°κ° μ€κ°λ€.
μν€ν μ³ κ΅¬μ‘°λ₯Ό λ§νμλ©΄,
- Controller : Modelμ λ°μ΄ν°λ₯Ό μ‘°ννκ±°λ μ λ°μ΄νΈνλ μν
- Model : λ°μ΄ν°λ₯Ό Viewλ₯Ό ν΅ν΄ λ°μνλ μν (BackμΌλ‘λΆν° λ°μ λ°μ΄ν° or BackμΌλ‘ λ³΄λΌ λ°μ΄ν°)
- View : μ¬μ©μλ‘λΆν° λ°μ΄ν°λ₯Ό μ λ ₯λ°κ³ 보μ¬μ£ΌκΈ°λ νλ μν
μ΄ κ΅¬μ‘°κ° κ°μ§λ λ¬Έμ μ μ κΉ¨λ«κΈ° μμν νμ΄μ€λΆ.. π€¦ββοΈ
βκΈ°λ₯μ μΆκ°νλ©΄ ν μλ‘ MVC ν¨ν΄μ 볡μ‘μ±μ΄ κΈ°νκΈμμ μΌλ‘ μ¦κ°νλ€!β
μ¦, κ±°λν μ΄ν리μΌμ΄μ μ λμμΌλ‘ ν νλ‘μ νΈμ λν΄μλ λ무 볡μ‘ν΄μ§λ€κ³ λ§νλ€.
μ¬μ©μμμ μνΈμμ©μ΄ βViewβμμ μΌμ΄λλ©΄μ
μ¬μ©μμ μ λ ₯μ λ°λΌ Modelμ μ λ°μ΄νΈ ν΄μ£Όμ΄μΌ νλ κ²½μ°κ° μκΈ°κ³
μμ‘΄μ±μ μ΄μ λ‘ ν Model λΏλ§ μλλΌ λ€λ₯Έ ModelκΉμ§ μ λ°μ΄νΈ ν΄μΌ νλ μν©λ μκΈ΄λ€.
like pingpong game..π νλμ 곡μ μ£Όκ³ λ°λ κ²μ μ΄λ ΅μ§ μμ§λ§ λ§μ 곡μ μ£Όκ³ λ°λλ€λ κ²μ..?
κ·Έλμ Flux μν€ν μ³κ° λλ°? π€·π»ββοΈ
π λ¨λ°©ν₯ λ°μ΄ν° νλ¦μ κ°μ§λ ꡬ쑰
λ°μ΄ν°λ λ¨λ°©ν₯μΌλ‘λ§ νλ₯΄κ³ μλ‘μ΄ λ°μ΄ν°λ₯Ό λ£μΌλ©΄ μ²μλΆν° λ€μ μμλλ λ°©μμ΄λ€.
λ°μ΄ν°μ νλ¦μ Dispatcher β Store β View β Action β Dispatcher β β¦
μν€ν μ³ κ΅¬μ‘°λ₯Ό 보μλ©΄,
-
Action : κΈ°μ‘΄ μνλ₯Ό λ³κ²½νκΈ° μν μ΄λ€ νλ, μ΄ νλμΌλ‘λΆν° λ겨λ°μ κ°λ€μ κ°μ§ νλμ κ°μ²΄ (λ°μ΄ν° λ¬Άμ)
// Redux export const setTable = item => ({ type: SET_TABLE, // μ‘μ μ΄λ¦(μ΄λ€ μ‘μ μΈμ§λ₯Ό κ°λ₯΄ν΄) payload: item, // λ겨λ°μ κ° })
-
Dispatcher : λͺ¨λ λ°μ΄ν°μ νλ¦μ κ΄λ¦¬νλ μΌμ’ μ νλΈ μν λ‘, μ‘μ λ°μ μ λμ€ν¨μ³λ‘ λ©μΈμ§λ μ‘μ κ°μ²΄κ° μ λ¬λλ©΄ μ½λ°± ν¨μλ₯Ό ν΅ν΄ μ€ν μ΄λ‘ μ λ¬νλ€. μ€ν μ΄μ μ κ·ΌνκΈ° μν μΌμ’ μ λ¨κ³
-
Store : λͺ¨λ μ‘μ μ λ°μμ μ ν©ν μ‘μ μ΄ μ΄λ€ κ±΄μ§ νν°λ§ν΄μ£Όκ³ , μν κ°μ λ³κ²½νκ³ μ°κ²°λ 컨νΈλ‘€λ¬ λ·°μκ² μν λ³νλ₯Ό μ리λ μν μ΄λ€. μν λ³κ²½μ μν μμ²μ μ€ν μ΄μ μ§μ ν μλ μλ€! (μ κ·ΌνκΈ° νλ λΉμ ..Store..)
-
View Controller & View : μνλ₯Ό κ°μ Έμμ 보μ¬μ£Όκ³ μ¬μ©μλ‘λΆν° μ λ ₯ λ°μ νλ©΄μ 보μ¬μ£Όλ μν μ΄λ€. View Controllerλ μ€ν μ΄μ λ·°μ μ€κ° 맀κ°μ²΄ μν μ΄κ³ , Viewλ 컨νΈλ‘€λ¬ λ·°μκ² λ³νλ μνλ₯Ό λ°μ κ·Έ μνμ λ°λΌ λ€μ λ λλ§νλ€.
μ¬κΈ°μ νμν λΌμ΄λΈλ¬λ¦¬, Redux π£
νμ΄μ€λΆμ΄ Flux μν€ν μ³λ₯Ό λ°νν νμ Fluxμ λν ꡬν체λ κ°μ΄ 곡κ°νλλ°, μ¬κΈ°μλ λμ€ν¨μ³λ§ ꡬνλμ΄ μμ΄ μμ ν Flux νλ μμν¬λΌκ³ λΆλ₯΄κΈ°μ λ¬΄λ¦¬κ° μμλ€. (14λ λ Fluxκ° λ°νλκ³ , 15λ λ 10μμ λ°νν λ²μ μμμΌ μ€ν μ΄λ₯Ό μ§μνκΈ° λλ¬Έμ μ¬μ€μ μμ ν 곡μ Flux ꡬνμ²΄κ° μλ μ )
μ΄ μκΈ°μ λ§μ Flux ꡬν체λ€μ΄ λνλ¬λλ°, μ§κΈκΉμ§ λ리 μ¬μ©λλ κ² μ€ νλκ° Redux λΌμ΄λΈλ¬λ¦¬μ΄λ€!
κΈ°μ‘΄μ Flux μν€ν μ³μ βReducerβ κ°λ μ μΆκ°ν΄, μν λ³κ²½μ κ°λ μ μ‘°κΈ λ°κΏ λ±μ₯νλ€.
리λμ€μ ꡬ쑰λ μ΄λ λ€.
-
Action : μ¬μ©μκ° μμ²ν μ‘μ (κΈ°μ‘΄ μνλ₯Ό λ³κ²½νκΈ° μν νλκ³Ό λ°μ΄ν°)μ΄λ©°, λ·°μμ useDispatchλ₯Ό μ¬μ©νμ¬ μ‘μ μ λ°μμν¨λ€.
-
Reducer : Flux μν€ν μ³μ Dispatcher λμ μν λ³ν λ‘μ§μ λ΄λΉνλ μν λ‘, μ 체 리λμλ₯Ό κ΄λ¦¬νλ Root Reducerκ° μκ³ νμ Sub Reducerκ° μλ€. μ¬κΈ°μ Reduxμ ν€ν¬μΈνΈλ π‘ μ΄μ μν μ체λ₯Ό λ³κ²½νμ§ μκ³ μνλ₯Ό 볡μ¬ν λ€μ μνλ₯Ό λ³κ²½νλ€λ κ²
-
Store : Flux μν€ν μ³μ μ€ν μ΄λ λ€μμ μ€ν μ΄κ° μ‘΄μ¬νλλ° λΉν΄ 리λμ€μμλ λ¨ νλμ μ€ν μ΄λ₯Ό κ°μ§λ©°, μν νΈλ¦¬λΌκ³ λΆλ¦¬λ μν κ°μ μ μ§νλ€.
-
View : μ€ν μ΄μ λ·°λ₯Ό μ°κ²°ν΄λμ
Provider Component
λ₯Ό ν΅ν΄ μ€ν μ΄κ° λ·°μ μνλ₯Ό 곡κΈνλ€.
β¨ μ 리
- μμ¦ λ¦¬μ‘νΈλ Flux μν€ν μ³κ° μ λ ΉνκΈ° λλ¬Έμ(π½) κΌ μ΄ν΄λ΄μΌ νλ κ°λ μ΄μλ€..
- νλ‘μ νΈμ ν¬κΈ°μ λ°λΌμ μν κ°μ΄ λ§μ§ μλ€λ©΄ κΌ Reduxλ₯Ό μ¬μ©νμ§ μκ³ λ¦¬μ‘νΈμ Context APIμ useReducerμ κ°μ κΈ°λ₯μ μ¬μ©ν μλ μμ§λ§, νλ‘μ νΈ ν¬κΈ°κ° μ μ 컀μ§κ³ 볡μ‘ν¨μ΄ λμ΄λλ©΄ Reduxλ₯Ό μ¬μ©νλ νΈμ΄ νλ‘μ νΈ μνλ€μ κ΄λ¦¬νλλ° μμ΄μ λ μ’μ κ² κ°λ€ π
- νλ‘μ νΈλ₯Ό μ§ννλ©΄μ 리λμ€λ₯Ό μ½λλ‘ μ νκ³ κ΅¬νλ§ ν΄λ΄€μ§, μ΄λ»κ² λ§λ€μ΄μ‘λμ§, μ΄κ² FLUX μν€ν μ³μμ νμλ λΌμ΄λΈλ¬λ¦¬μΈμ§ μμ§λ λͺ»ν μ± μ°κ³ μμλ€. μ΄μ μμΌ μ‘°κΈ μκ² λμμΌλ, μμΌλ‘ 리λμ€μ κ°λ μ λ νμ€νκ² μ€λͺ ν μ μλ κ·Έ λ κΉμ§ 곡λΆλ₯Ό μ΄μ¬ν ν΄μΌκ² λ€.