
자바 스크립트 SPA(Single Page Application)이 복잡해짐.
-> 위와 같은 다양한 UI 상태를 포함하여 많은 상태를 자바스크립트 코드로 관리할 필요가 생김.
** 전역상태 관리가 필요한 상황과 그렇지 않은 상황을 명확히 구분하여 상황에 따라 적절한 상태 관리하기

오른쪽과 같이 State 관리를 중앙화 하기


npm install redux react-redux


= 어떤 정보를 들고 있다.
**Application이 커질수록 State 관리가 어려워지므로 관리를 잘 하도록 만들자..

상태를 변경시켜달라는 주문서
type과 payload(데이터)를 함께 전달type : 겹치면 안되므로 상수로 관리
action을 받아 실제적으로 state를 변경하는 로직을 작성하는 함수



store에 있는 state를 조회

store를 변경하기 위해 action을 제출

순수 Redux는 복잡해지면 상태관리도 힘들고 코드가 길어져서 사용
편리하게 action, reducer, thunk, immer.js, async reducer를 만들고 사용할 수 있다.
action과 reducer를 따로 따로 하지 말고 한 번에 Slice로 할 수 있다.
src/store/reducers/todo.js

src/store/store.js

createStore -> configureStore



npm install redux-logger
src/store/store.jsimport { combineReducers, createStore } from "redux";
import counterReducer from "./reducers/counter";
import todosReducer from "./reducers/todo";
import { configureStore } from "@reduxjs/toolkit";
import logger from "redux-logger";
const myMiddlewares = [logger];
const rootReducer = combineReducers({
counter: counterReducer,
todo: todosReducer,
});
const store = configureStore({
reducer: rootReducer,
middleware: (getDefaultMiddleware) => {
const middlewares = getDefaultMiddleware().concat(myMiddlewares);
console.log("middlewares", middlewares);
return middlewares;
},
});
export default store;
middleware의 전형적인 형태


meta값을 읽어서 취소할 수 있게 하는 패턴

promise가 dispatch 될 수 있게 하는 패턴

action이 function 자체이고, 해당 function이 비동기 제어를 함. redux-thunk 방법

state가 유지되도록 하는 미들웨어
src/store/reducers/board.js
