# * React Redux๋?
# Redux๊ฐ ์๊ฒจ๋ ์ด์
์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๊ธํ์ด์ง ์ดํ๋ฆฌ์ผ์ด์
(์ดํ 'SPA')
๊ฐ๋ฐ์ด ํ๋ฐํ๊ฒ ์ด๋ฃจ์ด ์ง๋ฉด์, ๋ฆฌ์ํธ์ ์ปดํฌ๋ํธ ์ํ๋ฅผ ๋ํ๋ด๋ state์ ๊ตฌ์กฐ๊ฐ ์ ์ ๋ณต์กํด์ง๊ณ , JSON์ depth๋ ์ ์ ๊น์ด์ ธ ๊ฐ๋ฉด์, ์์ ์ปดํฌ๋ํธ์์ state๋ฅผ ํ์ ์ปดํฌ๋ํธ๋ก ๊ณ์ ์ํ๋ณํ๋ฅผ ์๋ ค์ฃผ๊ธฐ๊ฐ ๋๋ฌด ๋ณต์กํด ์ง๋ ์ํฉ์ด ๋ฐ์ํ์๊ณ , ์ฌ์ด๋ ์ดํฉํธ๋ฅผ ์ผ์ผํค๋ ๋น๋๊ธฐ ํต์ ๋ฐ์ดํฐ๋ ๋ณต์กํ ์ปดํฌ๋ํธ ๊ตฌ์กฐ์์ ๋์ฑ ๋ ์ค๋ฅ๋ฅผ ์ฐพ๊ธฐ๋ ํ๋ค๊ณ ์ปดํฌ๋ํธ ํ
์คํธ๋ฅผ ํ๊ธฐ์๋ ํ๋ค์ด์ก๊ธฐ ๋๋ฌธ์ ์ํ๊ด๋ฆฌ๋ฅผ ํธํ๊ฒ ํ๊ธฐ์ํด Redux๊ฐ ์๊ฒจ๋ฌ๋ค. (MVC ํจํด -> Flux ํจํด , Redux)
MVC Pattern | Flux Pattern |
---|---|
# Flux & Redux
๋ฆฌ๋์ค๋ ํ๋ญ์ค ํจํด์ ์ค์ํ ํน์ง๋ค์์ ์๊ฐ์ ๋ฐ์์ ๋ง๋ค์ด์ก๋ค๊ณ , ๋ฆฌ๋์ค ๊ณต์ ๋ฌธ์์๋ ๋์์๋ค.
Redux ๋ Flux ํจํด๊ณผ ๋ชจ๋ธ ์ ๋ฐ์ดํธ ๋ก์ง์ ์ง์คํ๊ฒ ํด์ค๋ค๋ ์ ์ ๋์ผํ๋ค.
Redux๋ ๋ฐ์ดํฐ์ ์ํ๋ฅผ ๋ฐ๊พธ์ง ์๋๋ค. (๋ฆฌ๋์์์ ์ํ๋ฅผ ๋ณ๊ฒฝํ์ง ์๋ ๊ฒ์ ๊ฐ๋ ฅํ ๊ถ์ฅํ๋ค.)
Flux์ ๋ฌ๋ฆฌ Redux์๋ ๋์คํจ์ฒ๋ผ๋ ๊ฐ๋ ์ด ์กด์ฌํ์ง ์๋๋ค.
Flux์ ๋ฌ๋ฆฌ Redux๋ ์คํ ์ด๋ฅผ ๋จ ํ๊ฐ ์ด๋ค.
# Redux ๊ท์น
์ดํ๋ฆฌ์ผ์ด์ ์ ์ํ๋ฅผ ๋ํ๋ด๋ ๋จ ํ๋์ Store๊ฐ JSONํํ๋ก ๊ตฌ์ฑ๋๋ค.
Store ๋ด๋ถ state์ธ JSON์ ๋ฌด์กฐ๊ฑด action์ ํตํด์๋ง ๋ณ๊ฒฝํ๋ค.
Flux ํจํด์ ํต์ฌ ๊ฐ๋ ๊ณผ ๋์ผํ๋ค.Reducer ๋ ์์ํจ์(Pure function) ์ผ๋ก ๊ตฌ์ฑํ๋ค.
๋ฆฌ๋์๋ ์์ ํ์ ๊ณผ, ๋ณ๊ฒฝ ์ State๋ฅผ ๋ฐ์์ ์๋ก์ด State๋ฅผ ๋ฆฌํดํ๋ ํจ์๋ก, ๋์ผํ ์ก์ ๊ณผ State๋ฅผ ๋ฐ์ผ๋ฉด ๋์ผํ ๊ฐ์ ๋ฆฌํดํ๋ค.
์ด ํน์ง์ ์ ํ๋ฆฌ์ผ์ด์ ๋๋ฒ๊น ์ ์ฝ๊ฒ ํด์ค๋ค.
# Redux๋ฅผ ์ฌ์ฉํ๊ธฐ ์ข์ ์์
์ ํ๋ฆฌ์ผ์ด์ ์ ์ญ์ ๊ณตํต์ผ๋ก ์ฌ์ฉ๋๋ ์ปดํฌ๋ํธ๊ฐ ๊ณตํต์ ์ํ๊ด๋ฆฌ๋ฅผ ๊ณต์ ํ ๊ฒฝ์ฐ
(๋ชจ๋ฌ ํ์ ๋๋ ํ์ด์ง ๋ก๋ฉ๋ฐ)
์์ ์ปดํฌ๋ํธ์์ ๋ฌด์ํ ๋ง์ Depth์ ํ์ ์ปดํฌ๋ํธ์ ์ํ๊ฐ์ ๋ด๋ ค์ค์ผ ๋๋๊ฒฝ์ฐ