본문 바로가기
노마드코더/React-Redux

3. Redux Toolkit

by 갱생angel 2024. 5. 14.

Redux-Toolkit : Redux를 더 간결하고 편리하게 사용할 수 있는 pakage
  -리덕스보다 더 짧은 코드로 짤 수 있음
  -state를 mutate(변형)이 가능함. 단 리턴을 해야 함 ex) return store.push() = O

>> npm install @reduxjs/toolkit //redux toolkit 설치

 

redux - <count.js>

createSlice : Redux-Toolkit에서 reducer를 생성하는 함수.

    -name : 이름

    -initialState : 초기값

    -reducers : 리듀서 생성

import { createSlice } from "@reduxjs/toolkit";

const countSlice = createSlice({ //슬라이스 생성
  name: "count", //슬라이스 이름
  initialState: 0, //슬라이스 초기값
  reducers: { 
    ADD: (state, action) => { //증가 액션
      return (state = state + 1);
    },
    MINUS: (state, action) => { //감소 액션
      return (state = state - 1);
    },
  },
});

export const { ADD, MINUS } = countSlice.actions; //생성한 액션을 추출
const countReducer = countSlice.reducer; //생성한 리듀서를 추출

export default countReducer;

 

redux - <store.js>

configureStore : Redux-Toolkit에서 Redux Store를 생성하는 함수
    -createStore보다 더 간편하게 스토어 설정

import { configureStore } from "@reduxjs/toolkit";
import countReducer from "./count";

const store = configureStore({ //스토어 생성
  reducer: {
    count: countReducer,
  },
});

export default store;

 

<index.js>

import React from "react";
import ReactDOM from "react-dom/client";
import "./index.css";
import App from "./App";
import { Provider } from "react-redux";
import store from "./redux/store";

const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(
  <Provider store={store}>
    <App />
  </Provider>
);

 

page - <reduxCount.js>

import React from "react";
import { useDispatch, useSelector } from "react-redux";
import { ADD, MINUS } from "../redux/count"; //카운트 액션 가져옴

function ReduxCount() {
  const count = useSelector((state) => state.count); //state를 count로 지정
  const dispatch = useDispatch();

  const addCount = (e) => {
    e.preventDefault();
    dispatch(ADD()); //증가 디스패치
  };
  const minusCount = (e) => {
    e.preventDefault();
    dispatch(MINUS()); //감소 디스패치
  };

  return (
    <div>
      <button onClick={addCount}>증가</button>
      <span> 카운트 : {count} </span>
      <button onClick={minusCount}>감소</button>
    </div>
  );
}

export default ReduxCount;

'노마드코더 > React-Redux' 카테고리의 다른 글

2. useDispatch  (0) 2024.05.12
1. useSelector, Provider  (0) 2024.05.12