
npm install @reduxjs/toolkit react-redux
import { configureStore } from '@reduxjs/toolkit'
export default configureStore({
reducer: { }
})
<Provider>๋ก <App/> ๊ฐ์ธ๊ธฐ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>
);
1๏ธโฃ createSlice()๋ก state ์์ฑ
2๏ธโฃ configureStore()์์ ๋ฑ๋ก
import { configureStore, createSlice } from '@reduxjs/toolkit'
let user = createSlice({ // 1๏ธโฃ createSlice()๋ก state ์์ฑ
name : 'user', // state ์ด๋ฆ
initialState : 'kim' // state ๊ฐ
})
export default configureStore({ // 2๏ธโฃ configureStore()์์ ๋ฑ๋ก
reducer: {
user : user.reducer // { ์๋ช
: createSlice๋ง๋ ๊ฑฐ.reducer }
}
})
useSelector((state) => { return state }) useSelector((state) => state.user ) ๐import { useSelector } from "react-redux"
function Cart(){
let a = useSelector((state) => { return state } )
console.log(a)
return (์๋ต)
}
let user = createSlice({
name : 'user',
initialState : 'kim',
reducers : {
changeName(state){ // ์์ ๋กญ๊ฒ ์๋ช
๊ฐ๋ฅ
return 'john ' + state // 'kim' โก๏ธ 'john kim'
}
}
})
export let { changeName } = user.actions
import { useDispatch, useSelector } from "react-redux"
import { changeName } from "./../store.js"
(์๋ต)
<button onClick={()=>{
dispatch(changeName()) // dispatch()๋ก ๊ฐ์ธ์ค์ผํจ
}}>๋ฒํผ์</button>
let user = createSlice({
name : 'user',
initialState : {name : 'kim', age : 20},
reducers : {
changeName(state){
return {name : 'park', age : 20} // ๋ฆฌํด ์ค๋ฅธ์ชฝ์์๋๊ฑธ๋ก ๊ฐ์๋ผ์
}
}
})
let user = createSlice({
name : 'user',
initialState : {name : 'kim', age : 20},
reducers : {
changeName(state){
state.name = 'park' // state ์ง์ ์์ ๋ ๊ฐ๋ฅ โก๏ธ immer.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ state ์ฌ๋ณธ์ ํ๋ ๋ ์์ฑํด์ค์(Redux ์ค์น์ ๋ธ๋ ค์ด)
}
}
})
let user = createSlice({
name : 'user',
initialState : {name : 'kim', age : 20},
reducers : {
increase(state, a){
state.age += a.payload // action. ์ผ๋ก ์๋ช
๋ง์ดํจ
} // action.type โก๏ธ state ๋ณ๊ฒฝํจ์ ์ด๋ฆ
} // action.payload โก๏ธ ํ๋ผ๋ฏธํฐ ๊ฐ์ ธ์ค๊ธฐ
})