리액트를 사용하다 보면 서로 다른 컴포넌트 끼리 state를 주고 받기가 까다롭다. Redux는 props 없이 state를 공유할 수 있게 도와주는 라이브러리이다.
Redux를 사용하면 js파일 하나에 모든 state를 저장하고 이를 필요로 하는 모든 컴포넌트에서 import해서 사용 및 변경이 가능하다.
npm install @reduxjs/toolkit react-redux
redux toolkit을 사용할건데 이는 redux를 쉽게 사용할 수 있다. (문법이 더 쉬움)
그리고 redux를 사용하려면 "react", "react-dom"의 버전이 18.1.x 이상이어야 하니 package.json에서 확인해본다.
Redux 셋팅
(store.js)
import { configureStore } from '@reduxjs/toolkit'
export default configureStore({
reducer: { }
})
(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>
);
store.js에 state들 보관하는 법
import { configureStore, createSlice } from '@reduxjs/toolkit'
let user = createSlice({
name : 'user',
initialState : 'kim'
})
export default configureStore({
reducer: {
user : user.reducer
}
})
등록한 state 사용법
(Cart.js)
import { useSelector } from "react-redux"
function Cart(){
let a = useSelector((state) => { return state } )
console.log(a)
return (생략)
}
아무 컴포넌트에서 useSelector((state) => { return state } ) 쓰면 store에 있던 모든 state가 그 자리에 남는다.
let a = useSelector((state) => state.user )
이런식으로 하나의 state만 가져오는것도 가능하다.
state 변경 방법은 다음 포스트 >>