Redux๋?Redux ํ๋ก์ฐ๋ฐ์ดํฐ๋ ์ด๋ป๊ฒ ๋ณ๊ฒฝ๋ ๊น์?Redux๋ฅผ ์ฌ์ฉํ๋ ์ด์ Redux ์ค์นํ๊ธฐ
ย
Redux๋?
๊ณต์ ํํ์ด์ง์์ ์ค๋ช
ํ๊ณ ์๋ ๋ฆฌ์ํธ์ ์ ์๋ฅผ ํ ๋ฒ ๋ณด๋๋ก ํฉ์๋ค. google์์๋ react redux๋ผ๋ ํค์๋๋ก ํ ๋ฒ ๊ฒ์ ํ ์ด๋ฏธ์ง๋ฅผ ์ดํด๋ด์ฃผ์ธ์.
ย
๋ฆฌ๋์ค๋ ๋ฆฌ์ํธ๋ง์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๋๋๋ค. Vue์๋ ์ ๊ฒฐํฉ๋๋ฉฐ, React, ๋๋ ์์ JS์๋ ๊ฒฐํฉ์ด ๋ฉ๋๋ค. ์ค์น์์ด ์คํํ ์ ์๋ ์ํ์ฝ๋ฉ์ ๊ฐ๋จํ ์์ ๋ฅผ ํตํด Redux์ ์์ฑ์ ์์๋ด
์๋ค.
ย
ย
- ๊ด๋ จ ์์
ย
์ฐ๋ฆฌ๊ฐ ์์์ ๋ฐฐ์ด ๋ฆฌ์กํธ์์, ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋, ํด๋น ๊ฐ๋ค์ Hook์ ์ฌ์ฉํด์ ๊ฐ์ ์ํ๋ฅผ ๋ฐ๊ฟ์ค ํ ํ๋ฉด์ ์ฌ๋ ๋๋งํ์ฌ์ ๊ฐ๋ค์ ๋ณด์ฌ์ฃผ์์ต๋๋ค. ์ฆ useState๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌ์กํธ์๊ฒ ๊ฐ์ ๋ณ๊ฒฝ์ ์๋ฆฌ๋ฉด, ๋ฆฌ์กํธ๊ฐ UI๋ฅผ ์
๋ฐ์ดํธ ํ์์ต๋๋ค.
๋ฆฌ๋์ค์์๋ useState์ ๋ง์ฐฌ๊ฐ์ง๋ก, ๋ณํ๋ ๊ฐ๋ค์ ๊ด๋ฆฌํด์ฃผ๋ ๊ด๋ฆฌ์์คํ
์
๋๋ค. ์ ์ญ์ผ๋ก ๋๋ ๊ต์ฐจ ์ปดํฌ๋ํธ๋ค์ ๋ฐ์ดํฐ ์ํ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. ๋ฐ์ดํฐ๋ค์ ๊ฐ์ด ๋ฐ๋์์ ๋ ๊ทธ ๊ฐ๋ค์ ์ปดํฌ๋ํธ๋ค์๊ฒ ์ ๋ฌํด์ฃผ๊ณ ๊ทธ ๊ฐ๋ค์ ๋ค์ ํ๋ฉด์ ๋ณด์ฌ์ค๋๋ค.
ย
์ฐ์ ์๋ ๋ด์ฉ์ ์ค๋ช
ํ๊ธฐ ์ ๋ฆฌ๋์ค ๋ฐ๋ธํด์ค๋ฅผ ์ค์นํด์ฃผ์ธ์.
ย
ย
์ ๋ฆฌ
- React๋ OOO OOOOO๋ฅผ ์ํ JS ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- Redux๋ ๋ฐ์ดํฐ๋ฅผ OOOO ๊ด๋ฆฌํจ์ผ๋ก ์์ธก ๊ฐ๋ฅํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํจ
- ๊ณตํต์ : ๋ณต์กํ ํ๋ก์ ํธ์์ ๋ณต์ก๋๋ฅผ ๋ฎ์ถฐ์ค
Redux ํ๋ก์ฐ
- ํ๋์ ์ค์ ๋ฐ์ดํฐ store๋ฅผ ๊ฐ์ต๋๋ค.(๋ฐ์ดํฐ๋ state(์ํ)๋ฅผ ๋งํฉ๋๋ค)
- ์ํ๊ฐ์ ๋ฐ๋ ๋๋ง๋ค ๋ฐ์ดํฐ๋ค์ state ๊ฐ์ ์์ ํด์ค reducer ํจ์๋ฅผ ๋ง๋ญ๋๋ค.
- dispatch๋ฅผ ์ฌ์ฉํ์ฌ reducer์๊ฒ state ๊ฐ์ ์์ ํ๋ผ๊ณ (action ๊ฐ์ ์ ๋ฌ) ์์ฒญํฉ๋๋ค.
- reducer๊ฐ state๊ฐ์ ์์ ํ๋ฉด, subscribe๋ฅผ ์ฌ์ฉํ์ฌ ์์ ๋ ๋ถ๋ถ์ UI์ ์ ๋ก๋ํฉ๋๋ค.
์ด๋ ต์ฃ ? ๊ทธ๋ผ ์๋์ ๊ฐ์ด ๋น์ ๋ฅผ ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ค์ ํ ๋ฒ ์ํ ์ฝ๋ฉ ์์ ๋ก ๋์๊ฐ ์ฝ๋๋ฅผ ์ดํดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ฐ์ดํฐ๋ ์ด๋ป๊ฒ ๋ณ๊ฒฝ๋ ๊น์?
React์์ ์ํ ๊ฐ์ ๋ฐ๊ฟ ๋๋ useState๊ฐ ์ ๊ณตํ๋ setState๋ฅผ ์ฌ์ฉํ์์ต๋๋ค. ํ์ง๋ง ์์ผ๋ก ์ฌ์ฉํ redux์์๋ state ์์ฒด์ ์ ๊ทผํ๋ ๊ฒ๋ ์ง์ ์์ ํ๋ ๊ฒ๋ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ๋์ Reducer ํจ์์๊ฒ ์์ ์ ์์ฒญํฉ๋๋ค.
const reducer = (state = 0, action) => { switch (action.type) { // action.type์ด "PLUS"๋ผ๋ฉด state ๊ฐ์ 1 ๋ํ ๊ฒ์ ๋๋ค. case "PLUS": return state - 1; case "MINUS": // action.type์ด "MINUS"๋ผ๋ฉด state ๊ฐ์ 1 ๋บผ ๊ฒ์ ๋๋ค. return state + 1; default: return state; // action.type์ด "PLUS, MINUS" ๋ชจ๋ ์๋๋ผ๋ฉด state ๊ฐ์ ๋ณํ๋ ์์ต๋๋ค. } };
ย
Redux๋ฅผ ์ฌ์ฉํ๋ ์ด์
์ํ ๊ฐ์ ์ ์ญ์ผ๋ก ๊ด๋ฆฌํด์ฃผ๋ useContext๊ณผ์ ์ฐจ์ด์ ์ด ๋ฌด์์ผ๊น์? useContext๋ ๋ถํ์ํ props์ ๋ฌ์ ๋ง๊ณ ์ ์ญ์ผ๋ก ๊ฐ๋ค์ ๊ด๋ฆฌํด์ฃผ๋๋ฐ ๋ง์ด์ฃ .
react Context๋ ๋จ์ ์ด ์์ต๋๋ค. Context๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ฌ๋ฌ๊ฐ์ ์ธํ
์ด ํ์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ Context๋ผ๋ ํฐ ํ๋ก์ ํธ๋ฅผ ์งํํ๊ฒ ๋๋ค๋ฉด ๋ณต์กํ ์ํ๊ด๋ฆฌ๊ฐ ๋ ์ ์์ต๋๋ค. ํ๋ก์ ํธ๊ฐ ํด์๋ก ๊ด๋ฆฌํด์ผํ ๊ฐ๋ค์ ๋ง์์ง๊ณ Provider๋ฅผ ๋ ๋ง์ด ์ฌ์ฉํ๊ฒ ๋๋ฉด์ provider์์ provider๋ก ๊น์ ์ค์ฒฉ๊ด๊ณ๊ฐ ๋ ์ ์์ต๋๋ค.
ํ์ง๋ง ๋ณ์์ ์๊ฐ ์ปจํธ๋กค ๊ฐ๋ฅํ ์ ๋์ ๋ณต์กํ์ง ์์ ํ๋ก์ ํธ์์๋ React์ ๋ด์ฅ๋์ด ์๋ Context๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ ์ ์์ต๋๋ค. ์ด๋ ํ๋ก์ ํธ์ ๊ต์ก ๋น์ฉ๊ณผ ํจ์ฉ์ ์ ์ ์ธ์ง ํ ํ์๊ฐ ์์ต๋๋ค.
<AuthContextProvider> <UIContextProvider> <UserForm/> </UIContextProvider> </AuthContextProvider>
ย
Redux ์ค์นํ๊ธฐ
npm i redux // javascript
npm i redux-react // React js
ย
ย