Redux
Redux๋ props ์์ด state๋ฅผ ๊ณต์ ํ ์ ์๊ฒ ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
1. Redux ์ค์น
npm install @reduxjs/toolkit react-redux
โป redux toolkit : redux์ ๊ฐ์ ๋ฒ์ (๋ฌธ๋ฒ์ด ์ข ๋ ์ฌ์์ง)
๊ทผ๋ฐ ์ค์นํ๊ธฐ ์ ์ package.json ํ์ผ์ ์ด์ด์ "react", "react-dom" ํญ๋ชฉ์ ๋ฒ์ ์ ํ์ธํ๋ค. ์ด๊ฑฐ ๋๊ฐ๊ฐ 18.1.x ์ด์์ด๋ฉด ์ฌ์ฉ๊ฐ๋ฅํ๋ค.
โฒ ๊ทธ๊ฒ ์๋๋ฉด ์ง์ ๋๊ฐ๋ฅผ 18.1.0 ์ด๋ ๊ฒ ์์ ํ ๋ค์ ํ์ผ์ ์ฅํ๊ณ ํฐ๋ฏธ๋์์ npm install ๋๋ฅด๋ฉด ๋๋ค.
2. Redux ์ ํ
โ ์๋ฌด๊ณณ(์๋ฅผ ๋ค๋ฉด, src ํด๋ ์)์ด๋ state๋ค์ ๋ณด๊ดํ๋ ํ์ผ์ธ store.js ํ์ผ์ ๋ง๋ค์ด์ ์๋ ์ฝ๋๋ฅผ ๋ณต๋ถํด์ค๋ค.
(src/store.js)
import { configureStore } from '@reduxjs/toolkit'
export default configureStore({
reducer: { }
})
โก index.js ํ์ผ๊ฐ์ Provider ๋ผ๋ ์ปดํฌ๋ํธ์ ์๊น ์์ฑํ ํ์ผ์ import ํด์จ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฐ์ <Provider store={importํด์จ๊ฑฐ}> ์ด๊ฑธ๋ก <App/> ์ ๊ฐ์ธ๋ฉด ๋๋ค.
๊ทธ๋ผ ์ด์ <App>๊ณผ ๊ทธ ๋ชจ๋ ์์์ปดํฌ๋ํธ๋ค์ store.js์ ์๋ state๋ฅผ ๋ง๋๋ก ๊บผ๋ด์ธ ์ ์๋ค.
(index.js)
import { Provider } from "react-redux";
import store from './store.js'
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
//<React.StrictMode>
<Provider store={store}>
<BrowserRouter>
<App />
</BrowserRouter>
</Provider>
//</React.StrictMode>
);
3. Redux store์ state ๋ณด๊ดํ๋ ๋ฒ
step 1. createSlice( ) ๋ก state ๋ง๋ค๊ณ
createSlice( ) ์๋จ์์ import ํด์จ ๋ค์์
{ name : 'state์ด๋ฆ', initialState : 'state๊ฐ' } ์ด๊ฑฐ ๋ฃ์ผ๋ฉด state ํ๋ ์์ฑ๊ฐ๋ฅ
(createSlice( ) ๋ useState( )์ ์ฉ๋๊ฐ ๋น์ท)
step 2. configureStore( ) ์์ ๋ฑ๋ก
state ๋ฑ๋ก์ configureStore( ) ์์ { ์๋ช : createSlice๋ง๋ ๊ฑฐ.reducer } ๋ก ๋ฑ๋ก
import { configureStore, createSlice } from '@reduxjs/toolkit'
let user = createSlice({
name : 'user',
initialState : 'kim'
})
export default configureStore({
reducer: {
user : user.reducer
}
})
4. Redux store์ ์๋ state ๊ฐ์ ธ๋ค์ฐ๋ ๋ฒ
์๋ฌด ์ปดํฌ๋ํธ์์ useSelector((state) => { return state } ) ์ฐ๋ฉด store์ ์๋ ๋ชจ๋ state ์ฌ์ฉ ๊ฐ๋ฅ
(Cart.js)
import { useSelector } from "react-redux"
function Cart(){
let a = useSelector((state) => { return state } )
console.log(a)
return (์๋ต)
}
์ด๋ฐ ์์ผ๋ก ์ฐ๋ฉด ์ข ๋ ํธ๋ฆฌํ ์๋ ์๋ค.
let a = useSelector((state) => state.user )
'๐ปWEB FrontEnd > ํ๋ ์์ํฌ React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
localStorage (0) | 2022.07.13 |
---|---|
Redux (2) - state ๋ณ๊ฒฝ (0) | 2022.07.13 |
Ajax๋ก ์๋ฒ์ ํต์ (0) | 2022.07.08 |
์ปดํฌ๋ํธ์ Lifecycle (0) | 2022.07.08 |
detail ํ์ด์ง ๋ง๋ค๊ธฐ (0) | 2022.07.08 |