본문 바로가기

React

[React] Redux Toolkit

Redux Toolkit

리덕스 툴킷은 우리가 이전에 배운 리덕스를 개량한 것으로, 코드는 더 적게, 리덕스를 더 편하게 쓰기 위한 기능들을 흡수해서 만든 것.

우리가 배웠던 리덕스와 구조나 패러다임이 모두 똑같음.

 

리덕스 툴킷 설치 명령어

yarn add @reduxjs/toolkit

 

 

 

1. configStore.js 설정

 

순수 redux configStore.js

const rootReducer = combineReducers({
  counter, // 리듀서 모음
});
const store = createStore(rootReducer);

 

redux toolkit

const store = configureStore({
  reducer: {
    counter: counter,
  }
})

 


2. redux toolkit 설치 이후, createSlice 를 import

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

 

3. redux toolkit 으로 action creator 와 reducer 를 한번에 가져올 수 있음.

 

initialState 는 그대로 작성

const initialState = {
  number: 0,
};

 

기존의 action creator 와 reducer 를 각각 작성했던 방법과 달리, 

// action creator
export const minusNumber = (payload) => {
  return {
    type: MINUS_NUMBER,
    payload,
  };
};

export const plusNumber = (payload) => {
  return {
    type: PLUS_NUMBER,
    payload,
  };
};

// reducer : 함수
const counter = (state = initialState, action) => {
  switch (action.type) {
    case PLUS_NUMBER:
      return {
        number: state.number + action.payload,
      };
    case MINUS_NUMBER:
      return {
        number: state.number - action.payload,
      };
    default:
      return state;
  }
};

 

 

다음과 같이 한번에 정리해서 사용할 수 있음.

// action creator, reducer 둘 다 들어있음
const counterSlice = createSlice({
  name: "counter",
  initialState,
  reducers: { // 리듀서는 객체 형태로 여러개 작성
    plusNumber: (state, action) => {
      state.number = state.number + action.payload;
    },
    minusNumber: (state, action) => {
      state.number = state.number - action.payload;
    },
  },
});

export default counterSlice.reducer; // 리듀서 export
export const { plusNumber, minusNumber } = counterSlice.actions; // actions import

 

'React' 카테고리의 다른 글

[React] json-server  (0) 2023.07.04
[React] Redux toolkit/ Devtools/ Flux 패턴  (0) 2023.07.04
[React] Redux  (0) 2023.06.20
[React] Life Cycle  (0) 2023.06.20
[React] React Hooks 최적화 (React.memo, useCallback, useMemo)  (0) 2023.06.20