Redux의 환경 설정이 복잡함
보일러 플레이트 최소화
$ npm install @reduxjs/toolkit
$ yarn add @reduxjs/toolkit
$ npm install --save-dev redux-devtools
스토어 생성하기
/* 📄 src/index.js */
import { configureStore } from '@reduxjs/toolkit';
import rootReducer from "../reducers/index";
const store = configureStore({
reducer: rootReducer,
middleware: 미들웨어,
devTools: 개발자도구여부 (true/false),
preloadedState: 스토어초기값,
enchaner:
등등..
});
export default store;
true/false
디스패치된 액션이 리듀서에 도달하기 전, 중간 영역에서 원하는 기능을 수행할 수 있게 해준다.
슬라이스를 이용하면 리듀서와 액션을 한번에 작성할 수 있다.
const loginSlice = createSlice({
name: "상태이름",
initialState: 초기값,
reducers: {
리듀서A: (state, action) => {
state.키 = action.payload.키;
},
리듀서B: (state) => {
state.키 = 값;
},
...
},
});
export const { 리듀서A, 리듀서B } = 슬라이스이름.actions;
export default 슬라이스이름.reducer;
/* 📄 src/reducers/loginSlice.js */
import { createSlice } from "@reduxjs/toolkit";
export const loginSlice = createSlice({
name: "login",
initialState: {
token: "",
},
reducers: {
setUserReducer: (state, action) => {
state.token = action.payload.token;
},
clearUserReducer: (state) => {
state.token = "";
},
},
});
export const { setUserReducer, clearUserReducer } = loginSlice.actions;
export default loginSlice.reducer;
/* 📄 src/reducers/index.js */
import { loginSlice } from "./loginSlice";
const rootReducer = combineReducers({
login: loginSlice.reducer,
});