| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- liststyletype
- ํด๋์ค์ ๋ ํฐ
- gtammertable
- captionside
- liststyleimage
- liststyleposition
- ์ฃผ์
- fontweight
- ํ์ ์ ๋ ํฐ
- inlineblock
- ์ถ์ฝ
- textdecoration
- ํผํ๊ทธ
- borderstyle
- ๋ชจ๋์นํฐํธ
- wordspacing
- CDN
- ์์ด๋์ ๋ ํฐ
- ํฐํธ์จ์ดํธ
- textshadow
- ํฅ์ค์ฝ๋
- bordercollapse
- borderspacing
- texttransform
- ๊ทธ๋ฃน์ ๋ ํฐ
- ์ ๋๋ฒ์ ์ ๋ ํฐ
- selectorslevel4
- formtag
- ๋นํ๊ทธ
- ๊ตฌ๊ธํฐํธ
- Today
- Total
็ก์
Redux (๋ฆฌ๋์ค) ๋ณธ๋ฌธ
๐ก Redux
์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ญ ์ํ(Global State)๋ฅผ ํ ๊ณณ์์ ๊ด๋ฆฌํ๋ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ.
๊ณต์ ํด์ผ ํ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋์ Store์์ ๊ด๋ฆฌํ์ฌ ์ฌ๋ฌ ์ปดํฌ๋ํธ๊ฐ ๋์ผํ ์ํ๋ฅผ ์ผ๊ด์ฑ ์๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๋์์ค๋ค.
โผ๏ธ ํ์ ์ด์
React์์๋ useState๋ก ์ปดํฌ๋ํธ ๋ด๋ถ์ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ณ , ๋ถ๋ชจ์์ ์์์ผ๋ก props๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ค.
ํ์ง๋ง ํ๋ก์ ํธ ๊ท๋ชจ๊ฐ ์ปค์ง์๋ก ์ฌ๋ฌ ์ปดํฌ๋ํธ์์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๊ฑฐ๋ ๋ณ๊ฒฝํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์ง๋ค. ์ด๋ ์ปดํฌ๋ํธ ๊ตฌ์กฐ๊ฐ ๊น์ด์ง๋ฉด ์ค๊ฐ ์ปดํฌ๋ํธ๊ฐ ์ฌ์ฉํ์ง ์๋ ๋ฐ์ดํฐ๊น์ง ๊ณ์ ์ ๋ฌํด์ผ ํ๋ Props Drilling ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ณ , ์๋ก ๊ด๊ณ์๋ ์ปดํฌ๋ํธ๋ผ๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๋ ๊ฒ๋ ์ด๋ ค์์ง๋ค.
Redux๋ ์ด๋ฌํ ์ํ๋ฅผ ํ๋์ Store์์ ์ ์ญ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์, ํ์ํ ์ปดํฌ๋ํธ๊ฐ ์ง์ ์ํ๋ฅผ ์กฐํํ๊ณ ๋ณ๊ฒฝํ ์ ์์ด ๋ฐ์ดํฐ๋ฅผ ์ผ๊ด์ฑ ์๊ฒ ๊ด๋ฆฌํ๊ณ Props Drilling ๋ฌธ์ ๋ฅผ ์ค์ผ ์ ์๋ค.
๐ Redux๋ React๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ํ๋ ์์ํฌ์์๋ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, React์์๋ ์ฃผ๋ก react-redux์ ํจ๊ป ์ฌ์ฉํ๋ค.
โผ๏ธ ํต์ฌ ๊ฐ๋
1๏ธโฃ ํ๋์ Store์์ ์ํ ๊ด๋ฆฌ
์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ญ ์ํ๋ ํ๋์ Store์์ ๊ด๋ฆฌํ๋ค.
Store
โโ user
โโ cart
โโ products
โโ theme
2๏ธโฃ State๋ ์ง์ ๋ณ๊ฒฝํ์ง ์๋๋ค.
State๋ ์ง์ ์์ ํ์ง ์๊ณ Action์ ํตํด ๋ณ๊ฒฝ์ ์์ฒญํ๋ค.
dispatch({
type: "counter/up"
});
3๏ธโฃ Reducer๊ฐ ์๋ก์ด State๋ฅผ ๋ง๋ ๋ค.
Reducer๋ ํ์ฌ State์ Action์ ๋ฐ์ ์๋ก์ด State๋ฅผ ๋ฐํํ๋ ์์ ํจ์(Pure Function)์ด๋ค.
(state, action) => newState
- ๋์ผํ ์ ๋ ฅ์ด๋ฉด ํญ์ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํด์ผ ํ๋ค.
โผ๏ธ ๋ฐ์ดํฐ ํ๋ฆ
Redux๋ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ผ๋ก ๋์ํ๋ค.
์ฌ์ฉ์ ์ด๋ฒคํธ ๋ฐ์
↓
Action ์์ฑ
↓
dispatch() ํธ์ถ
↓
Reducer ์คํ
↓
์๋ก์ด State ์์ฑ
↓
Store ์
๋ฐ์ดํธ
↓
์ปดํฌ๋ํธ ๋ฆฌ๋ ๋๋ง
- ์ด ๊ตฌ์กฐ ๋๋ถ์ ์ํ ๋ณํ ๊ณผ์ ์ ์ถ์ ํ๊ธฐ ์ฝ๊ณ ๋๋ฒ๊น ๋ ์์ํ๋ค.
โผ๏ธ ์ฃผ์ ์ปดํฌ๋ํธ
๐น store
์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ์ ์ญ ์ํ๋ฅผ ์ ์ฅํ๋ ๊ณต๊ฐ์ด๋ค.
const store = configureStore({
reducer: counterReducer
});
๐น state
ํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ์ด๋ค.
- ๋ก๊ทธ์ธ ์ ๋ณด
- ์ฅ๋ฐ๊ตฌ๋
- ๊ฒ์๊ธ ๋ชฉ๋ก
- ๋คํฌ๋ชจ๋ ์ฌ๋ถ
๐น action
์ด๋ค ์ํ๋ฅผ ๋ณ๊ฒฝํ ์ง ์ค๋ช ํ๋ ๊ฐ์ฒด์ด๋ค.
{
type: "counter/up"
}
- ํ์ํ ๋ฐ์ดํฐ๋ฅผ ํจ๊ป ์ ๋ฌํ ์๋ ์๋ค.
{
type: "counter/up",
payload: 5
}
- type : ์ด๋ค ์์ ์ธ์ง ๊ตฌ๋ถ
- payload : ํจ๊ป ์ ๋ฌํ ๋ฐ์ดํฐ
๐น dispatch
Action์ Store๋ก ์ ๋ฌํ๋ ํจ์์ด๋ค.
dispatch({
type: "counter/up"
});
- Dispatch๊ฐ ํธ์ถ๋๋ฉด Reducer๊ฐ ์คํ๋๋ค.
๐น reducer
Action์ ๋ฐ๋ผ ์๋ก์ด State๋ฅผ ๋ฐํํ๋ ํจ์์ด๋ค.
function reducer(state, action) {
switch (action.type) {
case "counter/up":
return {
value: state.value + 1
};
default:
return state;
}
}
- Reducer์์๋ ๊ธฐ์กด State๋ฅผ ์ง์ ์์ ํ์ง ์๊ณ ์๋ก์ด State๋ฅผ ๋ฐํํด์ผ ํ๋ค.
โผ๏ธ React์ ํจ๊ป ์ฌ์ฉํ๋ ์ฃผ์ API
๐น Provider
Redux Store๋ฅผ React ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฐ๊ฒฐํ๋ค.
<Provider store={store}>
<App />
</Provider>
- ๋ชจ๋ ํ์ ์ปดํฌ๋ํธ์์ Store๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
๐น useSelector()
Store์์ ํ์ํ State๋ฅผ ๊ฐ์ ธ์จ๋ค.
const count = useSelector(state => state.counter.value);
- ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก State๋ฅผ ์กฐํํ ๋ ์ฌ์ฉํ๋ค.
๐น useDispatch()
Action์ Store๋ก ์ ๋ฌํ๋ค.
const dispatch = useDispatch();
dispatch(counterSlice.actions.up());
- ์ํ๋ฅผ ๋ณ๊ฒฝํ ๋ ์ฌ์ฉํ๋ค.
โผ๏ธ ํ์ฉ ์ฌ๋ก
- ์ฌ๋ฌ ์ปดํฌ๋ํธ๊ฐ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ ๋
- ์ ์ญ ์ํ๊ฐ ๋ง์ ๋
- ์ํ ๋ณ๊ฒฝ ๋ก์ง์ด ๋ณต์กํ ๋
- ํ๋ก์ ํธ ๊ท๋ชจ๊ฐ ํฐ ๊ฒฝ์ฐ
- ํ์ ์ ์ผ๊ด๋ ์ํ ๊ด๋ฆฌ๊ฐ ํ์ํ ๋
๐ POINT ๐
โ๏ธ ํ์ฌ Redux์์๋ Redux Toolkit(RTK) ์ฌ์ฉ์ ๊ถ์ฅํ๋ค. โ๏ธ
๐ react-redux ์ค์น ๐
terminal
# If you use npm:
npm install redux
npm install react-redux
# Or if you use Yarn:
yarn add react-redux
- ๋ฆฌ๋์ค / ๋ฆฌ์กํธ๋ฆฌ๋์ค ๋ ๋ค ์ค์น.
'<React>' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| reducer์ reducers (0) | 2026.07.20 |
|---|---|
| Redux Toolkit (๋ฆฌ๋์ค ํดํท) (0) | 2026.07.16 |
| useReducer (์ ์ฆ๋ฆฌ๋์) (0) | 2026.07.15 |
| Context API (์ฝํ ์คํธ ์์ดํผ์์ด) (0) | 2026.07.15 |
| Styled component (์คํ์ผ๋ ์ปดํฌ๋ํธ) (0) | 2026.07.15 |
