이전에 배운 리덕스를 개량한 것
새로운 것이 아닌, 리덕스와 구조나 패러다임이 모두 똑같은 것이라고 할 수 있다.
전체 코드 양을 줄이기 위해 새로운 API가 추가되었고 일일히 손으로 만들어야하는 ducks 패턴 요소들이 어느정도 자동화가 되었다.
yarn add react-redux @reduxjs/toolkit
configStore.js
// import { createStore } from "redux";
// import { combineReducers } from "redux";
import counter from "../modules/counter";
import { configureStore } from "@reduxjs/toolkit";
//ASIS : 일반 reducer
// const rootReducer = combineReducers({
// counter,
// });
// const store = createStore(rootReducer);
// TODO: Redux toolkit
const store = configureStore({
reducer: {
counter: counter,
},
});
export default store;
slice 사용
// 일반 리덕스 예시 코드
import { createSlice } from "@reduxjs/toolkit";
// // Action Value
// const ADD_NUMBER = "ADD_NUMBER";
// const MINUS_NUMBER = "MINUS_NUMBER";
// Action Creator
// export const addNumber = (payload) => {
// return {
// type: ADD_NUMBER,
// payload,
// };
// };
// export const minusNumber = (payload) => {
// return {
// type: MINUS_NUMBER,
// payload,
// };
// };
// Initial State
const initialState = {
number: 0,
};
// // Reducer
// const counter = (state = initialState, action) => {
// switch (action.type) {
// case ADD_NUMBER:
// return {
// number: state.number + action.payload,
// };
// case MINUS_NUMBER:
// return {
// number: state.number - action.payload,
// };
// default:
// return state;
// }
// };
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 default counter;
export const { addNumber, minusNumber } = counterSlice.actions;
export default counterSlice.reducer;
https://bestalign.github.io/translation/cartoon-guide-to-flux/
https://taegon.kim/archives/5288