์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- TypeScript
- ๋์ ๊ณํ๋ฒ
- ์ด๋ถํ์
- Node.js
- ์ด๋ฏธ์ง ์์
- ์๋ฐ์คํฌ๋ฆฝํธ
- ์๊ณ ๋ฆฌ์ฆ
- ์๋ฐฉํฅ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- Redux toolkit
- ๋ฆฌ๋์ค ํดํท
- ๊ณผ์ ํ ์คํธ
- ๋ธ๋ฃจํธํฌ์ค
- ๋ถ์คํธ์บ ํ์น๋ชจ๋ฐ์ผ
- React
- ๋ฐฑ์ค
- svgํ์ผ ๋ค๋ฃจ๊ธฐ
- ํ๋ก๊ทธ๋๋จธ์ค
- ์นด์นด์ค์ฑ์ฉ
- ์ฝ๋ ํฌ๋ฉง
- ๋ถ์คํธ์ปจํผ๋ฐ์ค
- router v6
- JavaScript
- custom hook
- ์นด์นด์ค
- ์ฝํ
- DP
- ์ฝ๋ฉํ ์คํธ
- icecandidate
- ๋๋๊ทธ ์ด๋ฒคํธ
- js
- Today
- Total
๐ฅ dev-ruby
[๋ฆฌ์กํธ]๋ฆฌ๋์ค(Redux) ๋ ๋ฌด์์ผ๊น? | ๋ฆฌ๋์ค๋ฅผ ์ ์ฌ์ฉํ ๊น? ๋ณธ๋ฌธ
[๋ฆฌ์กํธ]๋ฆฌ๋์ค(Redux) ๋ ๋ฌด์์ผ๊น? | ๋ฆฌ๋์ค๋ฅผ ์ ์ฌ์ฉํ ๊น?
ruby_s 2021. 12. 22. 20:39๐ค ๋ฆฌ๋์ค๋?
์ ํ๋ฆฌ์ผ์ด์
์์ ์ํ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๊ฒ ๋์์ฃผ๋ ๋๊ตฌ์ด๋ค.
๋ณต์กํ ์ํ ๊ด๋ฆฌ๊ฐ ์ด๋ฃจ์ด์ง๋ SPA(Single Page Application)์์ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋๋ค.
๋ฆฌ๋์ค๋ ๋ฆฌ์กํธ ๋ฟ๋ง ์๋๋ผ jQuery, Angular ๋ฑ์ ์ฌ์ฉํ๋ ์ ํ๋ฆฌ์ผ์ด์
์์๋ ์ฌ์ฉํ ์ ์๋ค.
๋๋ ๋ฆฌ์กํธ์์ ์ฌ์ฉํ๋ ๋ฆฌ๋์ค์ ๋ํด ์์๋ณผ ๊ฒ์ด๋ค !
๋ฆฌ์กํธ์ ๋ฐ์ดํฐ ํ๋ฆ์ ๋จ๋ฐฉํฅ์ด๊ธฐ ๋๋ฌธ์, ๋ถ๋ชจ ์ปดํฌ๋ํธ ์์ ์กด์ฌํ๋ ์์ ์ปดํฌ๋ํธ๋ค์ ๋ถ๋ชจ ์ปดํฌ๋ํธ์ ์ํ๋ฅผ props๋ก ์ ๋ฌ๋ฐ๊ฒ ๋๋ค.
๋ถ๋ชจ ์ปดํฌ๋ํธ์ ์ํ๊ฐ์ด ๋ณํ๊ฒ ๋๋ฉด, ์์ ์ปดํฌ๋ํธ๋ ๋ณํ๋ ์ํ์ ๋ง๊ฒ data๋ ui๋ฅผ ๋ณ๊ฒฝํ๋ค. ์ฆ, ๋ฆฌ๋๋๋ง์ ํ๋ค.
์ฌ๊ธฐ์! ์ปดํฌ๋ํธ๋ ๋ค์๊ณผ ๊ฐ์ ์ํฉ์์ ๋ฆฌ๋๋๋ง ๋๋ค.
1. ์์ ์ ์ํ(state)๊ฐ์ด ๋ณ๊ฒฝ๋ ๋
2. ๋ถ๋ชจ ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋๋๋ง๋ ๋
3. ์์ ์ด ์ ๋ฌ๋ฐ์ props๊ฐ์ด ๋ณ๊ฒฝ๋ ๋
4. ๊ฐ์ ์ ๋ฐ์ดํธ ํจ์๊ฐ ์คํ๋ ๋
์ฆ, ์์ ๊ฐ์ ์ํฉ์์ ๋ถ๋ชจ ์ปดํฌ๋ํธ์ ์ํ๊ฐ์ด ๋ณํ๋ค๋ฉด, ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ ๋ฆฌ๋๋๋ง ๋ ๊ฒ์ด๊ณ , ์์ ์ปดํฌ๋ํธ ๋ํ ๋ฆฌ๋๋๋ง ๋๋ค.
๐ Redux๋ฅผ ์ฐ๋ ์ด์
1. ๋ชจ๋ ์ปดํฌ๋ํธ๋ค์ด props๋ฌธ๋ฒ ์์ด state๋ฅผ ์ง์ ๊บผ๋ด์ธ ์ ์์ -> ๋ถ๋ชจ ์์ ๊ฐ์ ๋ฐ์ดํฐ ์ ๋ฌ์ ํธ๋ฆฌ์ฑ์ ์ํด
2. ์ํ(state) ๊ด๋ฆฌ์ ์ฉ์ด -> store์์ state์์ ๋ฐฉ๋ฒ์ ๋ฏธ๋ฆฌ ์ ์ํด๋๋ค. ์ปดํฌ๋ํธ๋ค์ ์ง์ state๋ฅผ ์ง์ ์์ ํ์ง ์๊ณ ์์ ์์ฒญ๋ง ๋ณด๋ด์ ๊ทธ๋ฅ ๊ฐ์ ธ์์ฐ๋ฉด ๋๋ค.
๐ก ์ฅ์
๋ฒ๊ทธ๊ฐ ์ผ์ด๋ฌ์ ๋ ์ถ์ ์ด ์ฌ์. ๋ฒ๊ทธ๊ฐ ์๊ธฐ๋ฉด ๋ฒ์ธ์ ๋ฌด์กฐ๊ฑด store.js์.
์ฌ๊ธฐ์, ์์์ ๋ถ๋ชจ์ ์ํ๋ฅผ ๋ง ๋ณ๊ฒฝํ ์ ์๋ค. props๋ฌธ๋ฒ์ ํตํด ์ ๋ฌ๋ฐ์ ์ํ๋ง์ ๋ณ๊ฒฝํ ์ ์๋ค.
๋ฐ๋ผ์, ์ปดํฌ๋ํธ๊ฐ 100๊ฐ ์ค์ฒฉํด์ ์๋ค๋ฉด state๋ฅผ ์ ๋ฌํด์ฃผ๊ธฐ ์ํด ์์ฒญ๋๊ฒ ๋ง์ props๋ฌธ๋ฒ์ ์ฌ์ฉํด์ผํ๋ค.
๋ฆฌ๋์ค๋ฅผ ์ค์นํ๋ฉด ์ด ์์ ์ํ๋ค์ ๋ค ์ ์ฅํด๋์ด ์ปดํฌ๋ํธ๊ฐ ํ์ํ ๋ ๊บผ๋ด์ธ ์ ์๋ค.
์ค์น
npm install redux
์ธํ (์ดํดํ ํ์ X, ๋ฐฉ๋ฒ์ผ ๋ฟ)
: ๋ชธ๋ฌด๊ฒ ์ฆ๊ฐ๋ฅผ ์๋ก ๋ค์ด ์ค๋ช ํ๊ฒ ๋ค
import { Provider } from 'react-redux'
import { createStore } from 'redux'
function reducer(state = 100, action){
return state;
}
let store = createStore(reducer);
ReactDOM.render(
<React.StricMode>
<Provider store={store}>
<App/>
</Provider>
</React.StricMode>
document.getElementById('root')
);
๐จ ์ปดํฌ๋ํธ์์ store์ ์๋ state๋ฅผ ์ฐ๋ ๋ฐฉ๋ฒ
: useSelector๋ก ๋ฆฌ๋์ค์ state๋ฅผ ์กฐํํ๋ค.
function App(){
const ๊บผ๋ด์จ๊ฑฐ = useSelect((state) => state);
}
index.js
: store์ state ์์ ๋ฐฉ๋ฒ์ ๋ฏธ๋ฆฌ ์ ์ํ๋ค.
function reducer(state = ์ฒด์ค, action){
switch (action.type) {
case '์ฆ๊ฐ':
return state + 1
case '๊ฐ์':
return state - 1
default:
return state
}
}
์ปดํฌ๋ํธ์์ state ์์ ์์ฒญํ๋ ๋ฒ
: dispatch ์ฌ์ฉ
const dispatch = useDispatch();
...
return (
<button onClick={()=>{ dispatch({type: '์ฆ๊ฐ'}) }}>๋ํ๊ธฐ</button>
)
ํด๋ฆญ๋ง๋ค 1์ฉ ์ฆ๊ฐํ๊ฒ ๋๋ค.
Vuex๋ ๊ฐ์ ๊ฐ๋ ์ผ๋ก ์๊ฐํ๋ฉด ๋๋ค !
๊ณต์๋ฌธ์
https://ko.redux.js.org/introduction/getting-started/
Redux ์์ํ๊ธฐ | Redux
์๊ฐ > ์์ํ๊ธฐ: Redux๋ฅผ ๋ฐฐ์ฐ๊ณ ์ฌ์ฉํ๊ธฐ ์ํ ์๋ฃ
ko.redux.js.org