가수면

[Redux] Redux ToolKit 본문

React/라이브러리

[Redux] Redux ToolKit

니비앙 2022. 12. 9. 12:01

redux toolkit 설치

yarn add react-redux @reduxjs/toolkit

 

 

순서

1. modules 작성

// src/redux/modules/counterSlice.js

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

const initialState = {
  number: 0,
};

const counterSlice = createSlice({
  name: "counter", //모듈의 이름
  initialState,
  reducers: {
    addNumber: (state, action) => {
      state.number = state.number + action.payload;
    },

    minusNumber: (state, action) => {
      state.number = state.number - action.payload;
    },
  },
});

// 액션크리에이터는 컴포넌트에서 사용하기 위해 export 하고
export const { addNumber, minusNumber } = counterSlice.actions;
// reducer 는 configStore에 등록하기 위해 export default 합니다.
export default counterSlice.reducer;

 

2. configStore 작성

// src/redux/modules/config/configStore.js

import { configureStore } from "@reduxjs/toolkit";
/**
 * import 해온 것은 slice.reducer 입니다.
 */
import counter from "../modules/counterSlice";

/**
 * 모듈(Slice)이 여러개인 경우
 * 추가할때마다 reducer 안에 각 모듈의 slice.reducer를 추가해줘야 합니다.
 *
 * 아래 예시는 하나의 프로젝트 안에서 counter 기능과 todos 기능이 모두 있고,
 * 이것을 각각 모듈로 구현한 다음에 아래 코드로 2개의 모듈을 스토어에 연결해준 것 입니다.
 */
const store = configureStore({
  // reducer: { counter: counter, todos: todos },
  reducer: { counter: counter },
});

export default store;

 

3. index 작성

// index.js

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

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

'React > 라이브러리' 카테고리의 다른 글

[Styled Components] Styled Components Global Style  (0) 2022.12.17
[Redux] Redux ToolKit thunk  (0) 2022.12.10
Router  (0) 2022.12.03
[Styled Components] Styled Components  (0) 2022.12.02
[Redux] Redux  (0) 2022.12.02
Comments