[React] Redux toolkit

2023. 2. 1. 13:26·FE·Client/React
728x90

* Redux Toolkit

 

Redux Toolkit | Redux Toolkit

The official, opinionated, batteries-included toolset for efficient Redux development

redux-toolkit.js.org

$ npm install @reduxjs/toolkit

리덕스 툴킷 패키지 설치 후, package.json에서 

    "redux": "^4.2.1",

삭제(redux toolkit에 redux가 포함되어있기 때문)

store폴더 내에 있는 index.js에서 사용.(리덕스 store에서 redux toolkit사용)


* createSlice

리듀서 함수의 대상인 초기 상태(state)와 "슬라이스 이름(name)"을 받아 리듀서와 상태에 해당하는 액션 생성자와 액션 타입을 자동으로 생성하는 함수.

 

+) createReducer와의 차이

- createSlice가 createReducer보다 강력하고, 한 번에 몇 가지를 단순화한다.

 

//여기에 리덕스 코드 들어옴.
import { createStore } from "redux";
import { createSlice } from "@reduxjs/toolkit";

const initialState = { counter: 0, showCounter: true };

//초기 상태 객체 아래에서 createSlice호출.
createSlice({
  //전역 상태의 slice를 만들어야한다.
  name: "counter", //모든 slice는 이름이 있어야한다.
  initialState, //초기상태
  reducers: {
    //리듀서는 객체 혹은 맵. 객체 안에 메서드가 존재하면 된다.
    increment(state) {
      //redux toolkit과 createSlice를 사용하면 기존의 상태를 바꿀 수 없음.
      state.counter++;
    }, //여기 있는 모든 메서드는 최근 값 state를 받는다.
    decrement(state) {
      state.counter--;
    }, //더이상 action을 넣을 필요 없음.(서로 다른 메서드가 호출되기 때문.)
    //increase에는 payload가 필요하다.(추가데이터가 필요함)'
    increase(state, action) {
      state.counter = state.counter + action.amount;
    },
    toggleCounter(state) {
      state.showCounter = !state.showCounter;
    },
  },
});

*configureStore

기본 redux내부 함수인 combineReducers사용할 수 있지만,

reduxjs/toolkit내부 함수인 configureStore함수를 가져와서 사용할 수 있다.

 

configureStore는 createStore처럼 store를 만든다.

다른점은, 여러 개의 리듀서를 하나의 리듀서로 쉽게 합칠 수 있다.

 

//configureStore에 객체를 전달한다. 리듀서함수가 아니라 객체를.
const store = configureStore({
  //configureStore 객체 내부에서 reducer프로퍼티를 정의한다.
  //redux에는 전역 상태를 담당하는 단 하나의 주요 리듀서 함수만 있어야한다.
  //여기서는 단일 리듀서 함수를 정의할 수 있다 ex) reducer: counterSlice.reducer
  //어플리케이션 규모가 커질수록 reducer함수가 많아지기때문에 map으로 묶는걸 추천
  //{}객체로 묶어서 모든 리듀서를 하나의 큰 리듀서로 병합
  // reducer: { counter: counterSlice.reducer }
  reducer: counterSlice.reducer,
});

 

 

 

 

728x90

'FE·Client > React' 카테고리의 다른 글

[React] TypeScript  (0) 2023.04.27
[React] 리덕스 툴킷  (0) 2023.02.06
[React] Redux  (0) 2023.01.31
React Hook 규칙, Forward Refs, useImperativeHandle(focus와 scroll)  (0) 2023.01.29
[React] sh: react-scripts: command not found에러  (0) 2023.01.29
'FE·Client/React' 카테고리의 다른 글
  • [React] TypeScript
  • [React] 리덕스 툴킷
  • [React] Redux
  • React Hook 규칙, Forward Refs, useImperativeHandle(focus와 scroll)
DROPDEW
DROPDEW
💻 Developer | 기록하지 않으면 존재하지 않는다
  • DROPDEW
    제 2장 1막
    DROPDEW
  • 전체
    오늘
    어제
    • Dev (441)
      • App·Android (1)
      • BE (50)
        • HTTP 웹 기본 지식 (8)
        • 스프링 입문 - 코드로 배우는 스프링 부트, 웹 .. (12)
        • 스프링부트와 JPA 활용 (11)
        • 스프링부트 시큐리티 & JWT (0)
        • 실전 자바 기본, 중급 (1)
        • PHP (11)
      • FE·Client (23)
        • HTML (1)
        • React (19)
        • Unity (1)
      • Data (28)
        • AI (7)
        • Bigdata (6)
        • Database (1)
        • Python (0)
        • 빅데이터분석기사 (13)
      • Infra (1)
      • Activity (6)
        • Intern (0)
        • SK AI Dream Camp (2)
        • 구름톤 유니브 4기 (1)
        • 리모트 인턴십 6기 (3)
        • 봉사활동 (0)
        • 부스트캠프 AI Tech 8기 (0)
      • CS (8)
      • 취준 (13)
        • 자격증 (4)
        • 인적성·NCS (6)
        • 코테·필기·면접 후기 (3)
      • 코테 (270)
        • Algorithm (222)
        • SQL (35)
        • 정리 (13)
      • 인사이트 (27)
        • 금융경제뉴스 (7)
        • 금융용어·지식 (2)
        • 북마크 (7)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    최단경로
    이분탐색
    자료구조
    그리디알고리즘
    백준
    누적합
    그래프이론
    문자열
    너비우선탐색
    정렬
    매개변수탐색
    시뮬레이션
    티스토리챌린지
    오블완
    구현
    브루트포스 알고리즘
    다이나믹프로그래밍
    수학
    그래프탐색
    투포인터
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
DROPDEW
[React] Redux toolkit
상단으로

티스토리툴바