Redux를 사용하면 컴포넌트들이 props 없이 state 공유가 가능합니다.
import { configureStore } from '@reduxjs/toolkit'
export default configureStore({
reducer: { }
})
<provider>
태그를 넣어주어야합니다.import store from './store.js'
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<Provider store={store}>
<BrowserRouter>
<App />
</BrowserRouter>
</Provider>
);
import { configureStore, createSlice } from '@reduxjs/toolkit' // import해주기
let user = createSlice({
name : 'user', // state 이름
initialState : 'kim' // state 값
})
export default configureStore({ // state 등록
reducer: {
user : user.reducer // 이 형태로 등록해주어야 합니다.
}
})
import { useSelector } from "react-redux"
useSelector((state) => {return state}) // useSelector 기본 문법
let a = useSelector((state) => {return state})
console.log(a.user); // kim
useSelector((state) => state.user)
let user = createSlice({
name : 'user',
initialState : 'kim',
reducers : { // reducers에 함수 생성
changeName (state) { // changeName 이라는 함수
return 'john kim' + state
}
}
})
export let { changeName } = user.actions // export
state 수정하기위해 생성한 함수 import
import { changeName } from "./../store.js"
useDispatch() import (useDispatch()는 store.js로 요청보내주는 함수입니다.)
import { useDispatch } from "react-redux"
useDispatch() 함수를 변수에 할당
let dispatch = useDispatch()
changeName()을 감싸서 dispatch 작성
didpatch(changeName())
let user = createSlice({
name : 'user',
initialState : { name : 'kim', age : 20 },
reducers : {
changeName (state) {
state.name = 'park' // 직접 지정하여 수정
}
}
})
export let { changeName } = user.actions // export
let user = createSlice({
name : 'user',
initialState : { name : 'kim', age : 20 },
reducers : {
changeName (state) {
state.name = 'park'
},
increase(state, action){ // action으로 보통 작성한다.
state.age += action.payload // payload 반드시 작성
},
}
})
export let { changeName, increase } = user.actions // export