Flux Architecture๋ ๋ฌด์์ผ๊น?
๊ทธ์ ์ Architecture(์ํคํ ์ฒ)์ ๋ํด ๋จผ์ ์์๋ณด์.
์ํคํ ์ฒ๋, ํ๋ก๊ทธ๋๋ฐ์ ํ ๋ ์ด๋ค ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ํ๋ก๊ทธ๋๋ฐ์ ํ ์ง ์ค๊ณํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
๊ทธ๋ ๋ค๋ฉด Flux๋ ๋ญ๊น?
Flux๋ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ๊ตฌ์กฐ ํ๋ฆ์ ํ์ฉํ ๋ฆฌ์กํธ์ฉ ์ ํ๋ฆฌ์ผ์ด์ ์ํคํ ์ฒ์ด๋ค.
์ฌ๊ธฐ์ ํต์ฌ์ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ๊ตฌ์กฐ ํ๋ฆ์ด๋ผ๋ ๊ฒ์ธ๋ฐ
์ฆ Flux Architexture๋, ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ๊ตฌ์กฐ ํ๋ฆ์ ๊ฐ๋ ํ๋ก๊ทธ๋๋ฐ์ ๋งํ๋ค.
๊ทธ๋ผ Flux Architecture์ ํ๋ฆ์ ๋ฐ๋ผ๊ฐ ๋ณด์.
- Action์ด ์ด๋ฒคํธ ๋ฐ์์ ๊ฐ์งํ๋ฉด ์ผ์ข ์ ํ๋ธ์ญํ ์ ํ๋ Dispatcher์ Action์ ์ ๋ฌ
- Dispatcher๋ state๊ฐ ์ ์ฅ๋์ด ์๋ Store์ Action์ ์ ๋ฌ
- Store๋ ์ํ๋ฅผ ์ ๋ฐ์ดํธํ์ฌ ๋ค์ state๋ฅผ ์ ์ฅ
- ํด๋น Store๋ฅผ ๊ตฌ๋ ํ๊ณ ์๋ View๋ state์ ๋ณํ๋ฅผ ๊ฐ์งํ์ฌ ๋ฆฌ๋ ๋๋งํจ
- ๋๋ค์ Action์ด ์ด๋ฒคํธ๋ฅผ ๊ฐ์งํ๋ฉด Dispatcher์๊ฒ ์ ๋ฌ
- ์ด๋ฐ ๋ฐฉ์์ผ๋ก ๋จ๋ฐฉํฅ ํ๋ฆ ๋ฐ๋ณต
์ด๋ฒ์๋ Reducer + Flux๋ก, Flux Architecture๋ฅผ ๊ตฌํํ ์ ์ญ ์ํ ๊ด๋ฆฌ๋ฅผ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ Redux์ ํ๋ฆ์ ๋ฐ๋ผ๊ฐ ๋ณด์.
- ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ์ก์ ๊ฐ์ฒด๋ฅผ dispatch๋ฅผ ํตํด reducer์ ์ ๋ฌ
- reducer๋ ์์ ํจ์๋ก, ์ธ์๋ก ๋ฐ์ ์ก์ ๊ฐ์ฒด๋ฅผ ํ์ฉํ์ฌ state ์ํ๋ฅผ ์ ๋ฐ์ดํธ์ํค๊ณ ์๋ก์ด ์ํ๋ฅผ ๋ฐํํ์ฌ ์คํ ์ด์ ์ ๋ฌ
- store๋ ๋ณ๊ฒฝ๋ ์ํ๋ฅผ ์ ์ฅํจ
- store๋ฅผ ๊ตฌ๋ ํ๊ณ ์๋ ์ปดํฌ๋ํธ๋ state์ ๋ณํ๋ฅผ ๊ฐ์งํ์ฌ ๋ฆฌ๋ ๋๋ง์ ํจ
- ์์ ๊ฐ์ ๊ณผ์ ์ด ๋ฐ๋ณต๋จ
<Flux์์ ์ฃผ์ ์ฐจ์ด>
- Store์ ์ญํ ์ฐจ์ด: Flux์์๋ Store๊ฐ ์ํ์ ์ํ ๊ฐฑ์ ๋ก์ง์ ๋ชจ๋ ๋ด๊ณ ์์ง๋ง, Redux์์๋ Store๋ ๋จ์ํ ์ํ๋ฅผ ๋ณด๊ดํ๋ฉฐ, ๊ฐฑ์ ๋ก์ง์ ๋ฆฌ๋์์์ ์ฒ๋ฆฌํ๋ค.
- Dispatcher ์ญ์ : reducer ํจ์๊ฐ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ Redux๋ ๋จ์ผ Store๋ฅผ ์ฌ์ฉํ๋ฉฐ, Dispatcher๊ฐ ๋ฐ๋ก ํ์ํ์ง ์๋ค.
- ๋ถ๋ณ์ฑ ์ค์: Redux๋ ์ํ์ ๋ถ๋ณ์ฑ์ ๊ผญ ์ค์ํด์ผ ํ๋ค.
Redux๋ฅผ ์ฌ์ฉํ๋ค ๋ณด๋ฉด, ๋ณด์ผ๋ฌ ํ๋ ์ดํธ ์ฝ๋๊ฐ ์๋นํ ๋ง๋ค๋ ๊ฒ์ ๊นจ๋ซ๊ฒ ๋๋ค.
์ด๋ฐ ๋ณต์ก์ฑ์ ํด์ํ๊ณ ์ฝ๋๋ฅผ ๋ณด๋ค ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ๊ธฐ ์ํด Redux Toolkit (RTK)๊ฐ ๋ฑ์ฅํ๊ฒ ๋์๋ค.
Redux์์๋
- reducer๋ฅผ ์ง์ ์ ์ํ๊ณ ,
- ์ฌ๋ฌ ๊ฐ์ reducer๊ฐ ์์ ๊ฒฝ์ฐ combineReducers๋ฅผ ํตํด ํฉ์น ๋ค,
- createStore๋ฅผ ์ฌ์ฉํด store๋ฅผ ์์ฑํด์ผ ํ๋ค.
๋ฐ๋ฉด Redux Toolkit์์๋
- createSlice๋ฅผ ํตํด reducer ๋ก์ง๊ณผ ์ก์ ํจ์๋ฅผ ํ ๊ณณ์์ ์ ์ํ ์ ์์ผ๋ฉฐ,
- configureStore๋ฅผ ์ฌ์ฉํ๋ฉด combineReducers๋ฅผ ๋ฐ๋ก ํธ์ถํ์ง ์์๋
- ์ฌ๋ฌ reducer๋ฅผ ์๋์ผ๋ก ํฉ์ณ store๋ฅผ ์์ฑํ ์ ์๋ค.
Redux Toolkit์ ์ฌ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฅ์ ์ด ์๋ค.
- ์ฝ๋๋ฅผ ๊ฐ์ํํ ์ ์๋ค.
- ๋ด๋ถ์ ์ผ๋ก Immer ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ถ๋ณ์ฑ์ ์๋์ผ๋ก ๊ด๋ฆฌํด ์ค๋ค.
- ์ถ๊ฐ ์ค์ ์์ด Redux ๊ฐ๋ฐ ํ๊ฒฝ์ ์ต์ ํํ ์ ์๋ค.