1. redux 설치
& yarn add redux react-redux
2. createStore deprecate 로 인하여 React Redux Toolkit 설치
$ yarn add @reduxjs/toolkit
또느
$ npm install @reduxjs/toolkit react-redux
3. index.js
다음 라이브러리 import 및 configureStore 설정
import { Provider } from "react-redux"; import rootReducer from "./store"; import { configureStore } from '@reduxjs/toolkit' const store = configureStore({ reducer: rootReducer })
<Provider store={store}> </Provider> 추가
index.js 전체 소스
import React from 'react'; import ReactDOM from 'react-dom/client'; import './index.css'; import App from './App'; import reportWebVitals from './reportWebVitals'; import { Provider } from "react-redux"; import rootReducer from "./store"; import { configureStore } from '@reduxjs/toolkit' const store = configureStore({ reducer: rootReducer }) const root = ReactDOM.createRoot(document.getElementById('root')); root.render( <React.StrictMode> <Provider store={store}> <App /> </Provider> </React.StrictMode> ); reportWebVitals();
4. store.js
//액션 export const increase = (username) => ({ type: "INCREMENT", payload: username }); export const decrease = () => ({ type: "DECREMENT" }); export const dataInfo = (username) => ({ type: "DATAINFO", payload: username }); //상태 const initstate = { number: 1, hello: 8, username: 'ssar' } //액션의 결과를 걸러내는 친구 const rootReducer = (state = initstate, action) => { switch (action.type) { case "INCREMENT": return { number: state.number + 1, username: action.payload }; //return 되면 호출한 쪽에서 받는 것이 아니라 return 되는 순가 Ui 변경 case "DECREMENT": return { number: state.number - 1 }; case "DATAINFO": return { username: state.username } default: return state; } } export default rootReducer;
5. 사용
Top.js
import React from 'react'; import { useSelector } from "react-redux"; const Top = () => { const { number, hello, username } = useSelector((store) => store); //const number = useSelector((state) => state.number); return ( <div className='sub_container'> <h1>Top</h1> 번호 : {number} <br /> 이름 :{username} </div> ); }; export default Top;
Bottom.js
import "../App.css"; import { useDispatch } from "react-redux"; import { increase, decrease } from "../store"; const Bottom = () => { const dispatcher = useDispatch(); return ( <div className='sub_container'> <h1>Bottom</h1> <button onClick={() => dispatcher(increase('cos'))}>증가</button> <button onClick={() => dispatcher(decrease())}>감소</button> </div> ); }; export default Bottom;
https://github.com/braverokmc79/React-SpringBoot-1/commit/d9a6a7b2f08f772e1d683fb99668ad76914c6ec7
댓글 ( 4)
댓글 남기기