
Redux๋ ?
๐ Redux
๐ 1. ๋ฆฌ๋์ค๋ ๋ฌด์์ธ๊ฐ?
โ์ค์ state ๊ด๋ฆฌ์โ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋์์ฃผ๋ ํจํค์ง(๋ผ์ด๋ธ๋ฌ๋ฆฌ) ์ด๋ค.
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ค์ โ๋ฆฌ๋์คโ๋ฅผ ์ ์ญ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ผ๊ณ ๋ง์ด ํํํ๋ค. ์ ์ญ ์ํ, ์ฆ Global State๋ฅผ ์๋ฏธํ๊ณ ๊ทธ๊ฒ์ ๊ด๋ฆฌํ๊ฒ ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (ํจํค์ง) ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
๐ 2. ๋ฆฌ๋์ค๊ฐ ํ์ํ ์ด์

๐ง props ๋ก state ๋ฅผ ๊ณต์ ํ๋ ๋ฐฉ๋ฒ์ ๋ถํธํจ
- ์ปดํฌ๋ํธ์์ ์ปดํฌ๋ํธ๋ก State๋ฅผ ๋ณด๋ด๊ธฐ์ํด์๋ ๋ฐ๋์
๋ถ-๋ชจ ๊ด๊ณ๊ฐ ๋์ด์ผ ํ๋ค.
- ์กฐ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์์ ์ปดํฌ๋ํธ๋ก ๊ฐ์ ๋ณด๋ด๊ณ ์ ํ ๋๋ ๋ฐ๋์ ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ฅผ ๊ฑฐ์ณ์ผ๋ง ํ๋ค. ์ฆ, ์ ์ ๋ถ๋ชจ์ปดํฌ๋ํธ์์๋ ๊ทธ ๊ฐ์ด ํ์๊ฐ ์์ด๋ ๋จ์ํ ์์ ์ปดํฌ๋ํธ์๊ฒ ์ ๋ฌํ๊ธฐ ์ํด ๋ถํ์ํ๊ฒ ๊ฑฐ์ณ์ผ๋ง ํ๋ ๊ฒ์ ์๋ฏธํ๋ค. (์กฐ๋ถ๋ชจ โ ๋ถ๋ชจ โ ์์)
props drilling - ์์ ์ปดํฌ๋ํธ์์ ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ก ๊ฐ์ ๋ณด๋ผ ์ ์๋ค.
๋ฆฌ๋์ค๋ฅผ ์ฌ์ฉํ๋ฉด State๋ฅผ ๊ณต์ ํ๊ณ ์ ํ ๋ ๋ถ-๋ชจ ๊ด๊ณ๊ฐ ์๋์ฌ๋ ๋๊ณ , ์ค๊ฐ์ ์๋ฏธ์์ด ์ปดํฌ๋ํธ๋ฅผ ๊ฑฐ์น์ง ์์๋ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์ ์ปดํฌ๋ํธ์์ ๋ง๋ State๋ฅผ ๋ถ๋ชจ ์ปดํฌ๋ํธ์์๋ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
๐ 3. Global state์ Local state
๐ง Local state (์ง์ญ์ํ) ๋?
- ์ปดํฌ๋ํธ์์ useState๋ฅผ ์ด์ฉํด์ ์์ฑํ state ์ด๋ค. ์ข์ ๋ฒ์ ์์์ ์์ฑ๋ State ๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
๐ง Global state (์ ์ญ์ํ)๋?
- Global state๋ ์ปดํฌ๋ํธ์์ ์์ฑ๋์ง ์๋๋ค. ์ค์ํ ๋ ํน๋ณํ ๊ณณ์์ State๋ค์ด ์์ฑ๋๋ค. ์ค์ State๊ด๋ฆฌ์์์ State๋ฅผ ์์ฑํ๊ณ , ๋ง์ฝ ์ด๋ค ์ปดํฌ๋ํธ์์ State๊ฐ ํ์ํ๋ค๋ฉด ์ปดํฌ๋ํธ๊ฐ ์ด๋์ ์์นํ๊ณ ์๋ ์๊ด์์ด State๋ฅผ ๋ถ๋ฌ์์ ์ฌ์ฉ ํ ์ ์๊ฒ ๋๋ค. ์ด๋ ๊ฒ ํน์ ์ปดํฌ๋ํธ์ ์ข ์๋์ด ์๋ ๊ฒ์ด ์๋๋ผ ์ค์ state ๊ด๋ฆฌ์์์ ์์ฑ๋ State๋ฅผ Global state๋ผ๊ณ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ๊ฐ๋ค์ ๊ด๋ฆฌํ๋ ๊ฒ์ ์ ์ญ ์ํ ๊ด๋ฆฌ ๋ผ๊ณ ํ๋ค.
๐ 4. ๋ฆฌ๋์ค์ ํ๋ฆ ๊ตฌ์กฐ

๐ 5. Duck ํจํด
Erik Rasmussn ๊ฐ ์ ์ํ Ducks ํจํด์ ์๋์ ๋ด์ฉ์ ์ง์ผ ๋ชจ๋์ ์์ฑํ๋ ๊ฒ ์ด๋ค.
- Reducer ํจ์๋ฅผ
export defaultํ๋ค.
- Action creator ํจ์๋ค์
exportํ๋ค. - Action type์
app/reducer/ACTION_TYPEํํ๋ก ์์ฑํ๋ค. (์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก์ ์ฌ์ฉ๋ ๊ฒฝ์ฐ ๋๋ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์๋ก ํ ๊ฒฝ์ฐ์๋ UPPER_SNAKE_CASE ๋ก๋ง ์์ฑํด๋ ๊ด์ฐฎ๋ค.)
๊ทธ๋์ ๋ชจ๋ ํ์ผ 1๊ฐ์ Action Type, Action Creator, Reducer ๊ฐ ๋ชจ๋ ์กด์ฌํ๋ ์์ฑ๋ฐฉ์์
๋๋ค.
