๐ Redux๋ฅผ ์ฐพ๊ฒ๋ ์ด์ ?
React๋ก ๊ฐ๋จํ ์น ํ์ด์ง๋ฅผ ๋ง๋ค๊ณ ์์๋ค.
๋๊ธ์ ์ ๋ ฅํ์ ๋ ๊ธฐ์กด ๋๊ธ์ ๋ด ๋๊ธ์ด ์ถ๊ฐ๋๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ ์ถ์๋ค.
useState๋ฅผ ์ฌ์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ ์ปดํฌ๋ํธ์์์ ์กฐ์ํด์ฃผ๋ฉด ๋ด๊ฐ ์ํ๋ ๊ทธ๋ฆผ์ ์ป์ ์ ์์๋ค.
๊ทธ๋ฐ๋ฐ ๋ฌธ์ ๋ ํ์ ์ปดํฌ๋ํธ์๋ค.
๋๊ธ์ฐฝ ์ธ์๋ ๋ด ๊ฐ์ธ์ ๋ณด๊ฐ ๋ด๊ธด ์ฐฝ์ ์์ ๋ ๋ด๊ฐ ์ด ๋๊ธ๋ค์ด ์ดค๋ผ๋ฝ ๋ณด์ด๊ฒ๋ ๋ง๋ค๊ณ ์ถ์๋ค.
๊ทธ๋ด๋ ค๋ฉด ๋๊ธ์ฐฝ์์ ์ ๋ฐ์ดํธ ๋ ๊ทธ ์ ๋ณด๊ฐ ๊ฐ์ธ์ ๋ณด ์ฐฝ์๋ ํ์ํ ๊ฒ ๊ฐ์๋ค.
์ฆ, ๋ค๋ฅธ ์ปดํฌ๋ํธ ์์ ์๋ ์ ๋ณด๋ฅผ ์ด ์ปดํฌ๋ํธ๊ฐ์ ธ์์ผ ํ๋๋ฐ...
ํ์ํ ์ฝ๋๋ฅผ ๊ทธ๋๋ก ๋ณต๋ถํ๋ ๊ฒ ๋ง๊ณ ๋ ๋ฐฉ๋ฒ์ด ์๊ฐ์ด ์๋ฌ๋ค. State์ Props๋ฅผ ๋ชฐ๋์ ์์ ใ
ใ
ใ
ใ
ใ
์ด ๋ฐฉ๋ฒ์ด ๋๋ฌด ์ซ์ด์ ๊ตฌ๊ธ๋งํด๋ณด๋ค๊ฐ global state '์ ์ญ ์ํ'์ ๋ํ ๊ฐ๋ ์ ์๊ฒ๋์๋ค.
๐ Flux๋ ๋ญ๊น?
Flux๋ ํ์ด์ค๋ถ์์ Client-Side-Web-Applicaiton์ ๋ง๋ค๊ธฐ ์ํด ๊ฐ๋ฐํ App Architecture๋ค.
๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ ํ์ฉํด ๋ทฐ ์ปดํฌ๋ํธ๋ฅผ ๊ตฌ์ฑํ๋ React๋ฅผ ๋ณด์ํ๋ ์ญํ ์ ํ๋ค.
(Vue.js์ Angular.js๋ ํ๋ ์์ํฌ์ธ ๋ฐ๋ฉด React๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ธฐ๋๋ฌธ์ ๊ตฌ์กฐ์ ์ธ ๋ฉด์์ ์ฝํ๋ ๋ถ๋ถ์ ๋ณด์ ๐๐)
์ด์ ์ ํ๋ ์์ํฌ์ ๋ฌ๋ฆฌ "ํจํด"์ ๋ชจ์ต์ ํ๊ณ ์์ด ์ฝ๋์ ๋ฐ๋ก ์ ์ฉํด ์ฌ์ฉํ ์ ์๋ค๊ณ ํ๋ค.
โ MVC์ ๋ฌธ์ ์
Flux๋ฅผ ์ค๋ช ํ ๋ MVC ๋ชจ๋ธ๊ณผ ๋ง์ด ๋น๊ตํ๋ค.
์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ๋ฅผ ์ค๋นํ๋ฉฐ MVC ๋ชจ๋ธ์ ์ ํ๋ ๊ธฐ์ต์ด ๋๋๋ฐ, ๋น์์๋ '์ ์ด๋ฐฉ๋ฒ ์ข๋ค' ๋ผ๊ณ ์๊ฐํ์๋ค.
๊ท๋ชจ๊ฐ ์์ App์ ๋ง๋ค๋๋ ์ ์ฉํ์ง๋ง ๊ทธ ํฌ๊ธฐ๊ฐ ์ปค์ก์ ๋๋ ๊ฐ๋นํ๊ธฐ ์ด๋ ค์ด ๋ฐฉ๋ฒ์ด๋ ๊ฑธ ์ค๋ ๊นจ๋ฌ์๋ค.
MVC๋ ์๋ฐฉํฅ ๋ฐ์ธ๋ฉ ์์คํ ์ด๊ธฐ ๋๋ฌธ์ App์ ํฌ๊ธฐ๊ฐ ์ปค์ง์๋ก ์ฝ๋์ ์ธ๊ณผ ๊ด๊ณ๋ฅผ ํ์ ํ๊ธฐ ์ด๋ ต๋ค.
โ Flux์ ๋ฑ์ฅ
Flux๋ MVC์ ๋ค๋ฅด๊ฒ ๋จ๋ฐฉํฅ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ํ๋ฅธ๋ค.
React view์์ ์ฌ์ฉ์๊ฐ ์ํธ์์ฉํ ๋ ( id ์ ๋ ฅ, ๋๊ธ ์ ๋ ฅ, ๊ฒ์๋ฌผ ์ฌ๋ฆฌ๊ธฐ, ์ข์์ ํด๋ฆญ etc )
ํด๋น view๋ ์ค์์ dispatcher๋ฅผ ํตํด action์ ์ ํํ๋ค.
App์ Data์ Business logic์ ๋ด๊ณ ์๋ store์ action์ด ์ ํ๋๋ฉด ์ด action์ ์ํฅ์ด ๋ฏธ์น๋ ๋ชจ๋ view๋ฅผ ๊ฐฑ์ ํ๋ค.
์ด ๋ฐฉ์์ ํนํ, React์ ์๋ง๋ ๊ฒ view๊ฐ ์ด๋ค ๋ฐฉ์์ผ๋ก ๊ฐฑ์ ๋์ด์ผํ๋ ์ง ์ปดํฌ๋ํธ๋ง๋ค ์ผ์ผ์ด
์์ฑํ์ง ์๊ณ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์๊ธฐ๋๋ฌธ์ ์ธ์์ธ์ ํธ๋ฆฌํ๋ค.
๊ธ์ ์ฐ๋ฉด์๋ wow ๋๋ฌด ํธํ ๊ฒ๊ฐ๋ค๋ ์๊ฐ์ ํ๋ค !!!
โพ Flux์ ๊ตฌ์ฑ
Dispatcher / Stores / Views (React ์ปดํฌ๋ํธ๋ผ ๋งํด๋ ๋ฌด๋ฐฉ)
โ action์ dispatcher์๊ฒ action creator ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค. ( ๋๋ถ๋ถ์ action์ ์ฌ์ฉ์ ์ํธ์์ฉ์์ ๋ฐ์ํ๊ธด ํจ )
โ ๋ชจ๋ action์ store๊ฐ dispatcher์ ๋ฑ๋กํด๋ callback์ ํตํด ๋ชจ๋ store์ ์ ์ก๋๋ค.
โ action์ ๋ํ ์๋ต์ผ๋ก store๊ฐ ์ค์ค๋ก ๊ฐฑ์ ์ ํ ๋ค์์๋, ์์ ์ด ๋ณ๊ฒฝ๋์๋ค๊ณ ๋ชจ๋์๊ฒ ์๋ฆฐ๋ค.
controller-view๋ผ๊ณ ๋ถ๋ฆฌ๋ ํน๋ณํ view๊ฐ ๋ณ๊ฒฝ ์ด๋ฒคํธ๋ฅผ ๋ฃ๊ณ ,
์๋ก์ด ๋ฐ์ดํฐ๋ฅผ store์์ ๊ฐ์ ธ์จ ํ,
๋ชจ๋ ํธ๋ฆฌ์ ์๋ ์์ view์๊ฒ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ค.
--> App ์ํ๋ store์ ์ํด ๊ด๋ฆฌ๋๊ณ App์ ๋ค๋ฅธ ๋ถ๋ถ๊ณผ๋ ์์ ํ ๋ถ๋ฆฌ๋ ์ํ๋ก ๋จ๋๋ค.
'Front-end > Redux' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Redux 3๊ฐ์ง ์์น ์ ๋ฆฌ (0) | 2021.11.04 |
---|---|
Redux Action๊ณผ Reducer์ Store์ ๊ด๊ณ์ฑ (0) | 2021.09.28 |
๋๊ธ