๐ Redux(๋ฆฌ๋์ค)
๐ Redux(๋ฆฌ๋์ค)
> `Redux`๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ์ ์ํ ์์ธก ๊ฐ๋ฅํ ์ํ ์ปจํ ์ด๋์ด๋ค.
`Redux`๋ ์ผ๊ด์ ์ผ๋ก ๋์ํ๊ณ , ์๋ก ๋ค๋ฅธ ํ๊ฒฝ(์๋ฒ, ํด๋ผ์ด์ธํธ, ๋ค์ดํฐ๋ธ) ๋ฑ์์ ์๋ํ๊ณ , ํ ์คํธํ๊ธฐ ์ฌ์ด ์ฑ์ผ๋ก ์์ฑํ ์ ์๊ฒ ๋์์ค๋ค. `React`์ `React Native`์ ๊ฐ์ ๋ค๋ฅธ ๋ทฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจ๊ป ์ฌ์ฉํ ์ ์๊ณ , `Redux`๋ ๋งค์ฐ ์์ง๋ง(์์กด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํฌํจ 2KB), ์ฌ์ฉ ๊ฐ๋ฅํ ์ ๋์จ(ํ๋ก๊ทธ๋จ์ ๊ธฐ๋ฅ์ ๋ณด์ํ๊ธฐ ์ํด ์ถ๊ฐํ๋ ๋ณด์กฐ ํ๋ก๊ทธ๋จ)์ ๋งค์ฐ ๋ง๋ค.
Redux๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ญ์ผ๋ก ์ํ๋ฅผ ๊ด๋ฆฌํด์ฃผ๋ ์ ์ฅ์๋ฅผ ์ ๊ณต ๋ฐ์ ์ ์์ด, ์ธ์ ์ด๋์๋ ์ ์ฅ์์ ์ ๊ทผํ์ฌ ์ํ๊ด๋ฆฌ(state management)๋ฅผ ํธ๋ฆฌํ๊ณ ํจ์จ์ ์ผ๋ก ๋ค๋ฃฐ ์ ์๊ฒ ํด์ค๋ค.
Redux๋ ์ด๋ด ๋ ์ฌ์ฉํด์ผ ํ๋ค.
`Redux`๋ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ธฐ์ ์ ์ฉํ ๋๊ตฌ์ด์ง๋ง ํ์ฌ ์ํฉ์ ์ ํฉํ์ง ๋ฐ์ ธ ๋ณด์์ผ ํ๋ค. ๋จ์ง ๋๊ตฐ๊ฐ๊ฐ ์ฌ์ฉํ๋ผ๊ณ ํ๋ค๋ ์ด์ ๋ง์ผ๋ก `Redux`๋ฅผ ์ฌ์ฉํด์๋ ์๋๋ค. ์๊ฐ์ ๋ค์ฌ์ ์ ์ฌ์ ์ธ ์ด์ ๊ณผ ๊ทธ์ ๋ฐ๋ฅด๋ ๋จ์ ์ ์ดํดํด์ผ ํ๋ค.
Redux๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ํฉํ ์ํฉ
> 1. ๊ณ์ํด์ ๋ณํํ๋ ์๋นํ ์์ ๋ฐ์ดํฐ๊ฐ ์์ ๊ฒฝ์ฐ > 2. ์ํ๋ฅผ ์ํ ๋จ ํ๋์ ๊ทผ์์ด ํ์ํ ๊ฒฝ์ฐ > 3. ์ฑ์ ์ค๊ฐ ๋๋ ํฐ ๊ท๋ชจ์ ์ฝ๋๋ฒ ์ด์ค๊ฐ ์๊ณ , ๋ง์ ์ฌ๋๋ค์ด ์์ ํ ๊ฒฝ์ฐ
Redux ํค์๋
`Redux`๋ฅผ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ ์ฉ์ด์ ๊ฐ๋ ์ ์์์ผ ํ๋ค.
1. Action (์ก์ )
์ํ๋ฅผ ์ ๋ฐ์ดํธํ๋๋ฐ ํ์ํ ์ ๋ณด๋ฅผ ๋ด์ ๊ฐ์ฒด๋ค. `Action` ๊ฐ์ฒด๋ ๋ฐ๋์ ๊ณ ์ ํ ํ์ (type)์ ํ๋กํผํฐ(Property)๋ฅผ ๊ฐ์ ธ์ํ๊ณ , ์ํ๋ฅผ ๋ณ๊ฒฝํด์ผ ๋ ๋, ์ด๋ ํ ๋ณํ๋ฅผ ์ค์ง ํด๋นํ๋ ์ก์ ์ ๋ฐ์์ํฌ ์ ์๋ค.
2. Action Creator (์ก์ ์์ฑ ํจ์)
`action`์ด ๋์์ ๋ํด ์ ์ธ๋ ๊ฐ์ฒด๋ผ๋ฉด, `Action Creator`๋ `action`์ ์์ฑํ์ฌ ์ค์ ๊ฐ์ฒด๋ก ๋ง๋ค์ด ์ฃผ๋ ํจ์๋ค. ๋ณํ๋ฅผ ์๊ธธ ๋๋ง๋ค `action` ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ค์ผ ํ๋๋ฐ, ๋งค๋ฒ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ค ํ์ ์์ด ํจ์๋ก ๋ง๋ค์ด ์ฌ์ฌ์ฉํ ์ ์๋ค.
3. Reducer (๋ฆฌ๋์)
`store`์ ์ ๊ทผํด์ ์ํ(state) ๋ณํ๋ฅผ ์ผ์ผํค๋ ํจ์๋ค. ์ก์ ์ ๋ฐ์์ํค๋ ค๋ฉด `reducer`๊ฐ ํ์ฌ ์ํ์ ์ ๋ฌ๋ฐ์ ์ก์ ๊ฐ์ฒด๋ฅผ ํ๋ผ๋ฏธํฐ(parameter)๋ก ๋ฐ์์จ๋ค. ๋ฐํํ๋ ์ํ๋ ์๋ก ๋ง๋ค์ด์ ๋ฐํ์ ํด์ค๋ค.
4. Store (์คํ ์ด)
`store`๋ ์ํ๊ฐ ๊ด๋ฆฌ๋๋ ์ค์ง ํ๋์ ๊ณต๊ฐ์ด๋ค. ์ฑ์์ ํ์ฌ`state`์ `reducer`๊ฐ ์ ์ฅ๋์ด ์์ผ๋ฉฐ, ์ปดํฌ๋ํธ์์ ์ํ ์ ๋ณด๊ฐ ํ์ํ ๋ ์คํ ์ด์ ์ ๊ทผํ๋ค.
5. Dispatch (๋์คํจ์น)
`Dispatch`๋ `store` ๋ด์ฅ ํจ์ ์ค ํ๋์ด๋ฉฐ, `action`์ ๋ฐ์์ํค๋ ํจ์๋ค. `action`์ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํ๊ณ ,`dispatch`๊ฐ ํธ์ถ๋๋ฉด `store`๋ `reducer` ํจ์๋ฅผ ์คํ์์ผ์ ์๋ก์ด ์ํ๋ฅผ ๋ง๋ค์ด ์ค๋ค.
6. Subscribe (๊ตฌ๋ )
`Subscribe`๋ `store`์ ๋ด์ฅ ํจ์ ์ค ํ๋์ด๋ฉฐ, ํน์ ํจ์๋ฅผ ์ ๋ฌํด์ฃผ๋ฉด `action`์ด `dispatch` ๋์์ ๋๋ง๋ค ์ ๋ฌ๋ ํจ์๊ฐ ํธ์ถ๋๋ค.
Redux ํ๋ฆ
<img src="https://velog.velcdn.com/images/tlsl13/post/d537b15b-d1cd-4671-b761-4709581207a1/image.gif" width="30%" height="30%"/>
> 1. UI์์ ์ปดํฌ๋ํธ ๋ด์ ์กด์ฌํ๋ ์ด๋ฒคํธ๊ฐ ํธ์ถ๋๋ค. > 2. ์ด๋ฒคํธ์ ์ฐ๊ฒฐ๋ `Action Creator`๊ฐ ํธ์ถ๋๋ค. > 3. Action Creator์์ ์์ฑ๋ `Action`์ด ํธ์ถ๋๋ค. > 4. `Action`์ด `Reducer`๋ก ์ ๋ฌ๋๋ค. ์ด ๊ณผ์ ์ `Dispatch`์์ ๋ด๋นํ๋ค. > 5. `Reducer`์์ `Dispatch`๋ action์ ๋ฐ๋ผ ์ํ๊ฐ์ ๋ณ๊ฒฝํ๋ค. > 6. ๋ณ๊ฒฝ์ฌํญ์ด ๋ ๋๋ง๋์ด UI์ ๋ํ๋๋ค.
๋์ ์๊ฒฌ
๊ฐ๋จํ ํ๋ก์ ํธ์๋ `Redux`๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ํ์ ์ ํ๋ ๊ฒฝ์ฐ๋ ๋ณต์กํ ๋ก์ง ๊ตฌ์กฐ์ผ ๋ ์ฌ์ฉํ๋ฉด ํจ์จ์ ์ด๋ค. `Redux`๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ง๋ณด์๊ฐ ์ฉ์ดํด์ง๋ฏ๋ก ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ํ๋ฆ์ ์๊ณ ์๋ค๋ฉด ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ๋ ๊ฒ์ ์ถ์ฒํ๋ค.
>