html,css,js 공부/React

리액트 리덕스툴킷 사용법

ari0930 2024. 12. 14. 16:18

리액트 리덕스툴킷 사용법

 

리덕스 툴킷 설치

npm install @reduxjs/toolkit react-redux

 

 

리덕스 툴킷 흐름

1.적용할 컴포넌트 만들기

2.슬라이스 

3.스토어

4.컴포넌트에 리덕스 적용하기

 

1.컴포넌트 

import React from 'react';


const Counter = () => {


  return (
    <div>
      <h1>Redux Toolkit Counter</h1>
      <div>
        <button onClick={}>Increment</button>
        <button onClick={}>Decrement</button>
        <button onClick={}>Increment by 5</button>
      </div>
      <p>Count: </p>
    </div>
  );
}


export default Counter;

 

2.슬라이스 만들기

슬라이스에서 액션함수와 리듀서 함수를 만들어 사용합니다.

import {createSlice} from '@reduxjs/toolkit'

//초기상태
const initialState ={
    number:0,
}

//슬라이스 만들기
const counterSlice= createSlice({
    //슬라이스의 이름
    name : 'counter',
    initialState,
    reducers:{
        increase:(state)=>{
            state.number+=1;
        },
        decrease:(state)=>{
            state.number-=1;
        },
        inputInint:(state,action)=>{
            state.number+=action.payload;
        }
    },
    
    

})

export const { increase, decrease, inputInint } = counterSlice.actions;
export default counterSlice.reducer;

 

3.스토어 생성

import { configureStore } from "@reduxjs/toolkit";
import counterReducer from "./counterSlice"

const store = configureStore({
    reducer:{
        counter:counterReducer,

    }
})

export default store;

 

4.컴포넌트에 리덕스 적용하기

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  store  from './slices/store'


const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <Provider store={store}> {/* store를 Provider로 감싸기 */}
    <App />
  </Provider>,
);

// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();

 

1번에서 만든 컴포넌트 리덕스 적용할수 있도록 수정

import React from 'react';
import { useDispatch, useSelector } from 'react-redux';
import {  increase, decrease, inputInint } from '../slices/counterSlice';

const Counter = () => {
  const count = useSelector((state) => state.counter.number); // Redux 상태 가져오기
  const dispatch = useDispatch(); // dispatch 함수 가져오기

  return (
    <div>
      <h1>Redux Toolkit Counter</h1>
      <div>
        <button onClick={() => dispatch(increase())}>Increment</button>
        <button onClick={() => dispatch(decrease())}>Decrement</button>
        <button onClick={() => dispatch(inputInint(5))}>Increment by 5</button>
      </div>
      <p>Count: {count}</p>
    </div>
  );
}


export default Counter;

 

반응형

'html,css,js 공부 > React' 카테고리의 다른 글

리액트 기존 리덕스 사용방법  (0) 2024.12.13
리액트 라우터 사용법  (1) 2024.12.08
Ref 사용법  (1) 2024.11.24
리액트 props 사용법  (1) 2024.11.23
리액트 Global State  (0) 2024.03.23