import { Provider } from "react-redux"; import { createStore } from "redux"; import rootReducer from "./store/reducers"; const store = createStore(rootReducer); ReactDOM.render( <Provider store={store}> <Routes /> </Provider>, document.getElementById("root") );
export const addCart = (item) => { // 액션 "생성 함수" return { type: "ADD_ITEM", // 액션 "객체" payload: item, }; };
// store/reducer/index.js import { combineReducers } from "redux"; import cartReducer from "./cartReducer"; export default combineReducers({ cartReducer }); // cartReducers.js function cartReducer(state = INITIAL_STATE, action) { switch (action.type) { case "ADD_ITEM": return [...state, action.payload]; case "DELETE_ITEM": return [...action.payload] default: return state; } }
예시) 장바구니 페이지
src
├── Components
│ ├── CartItem.js
│ ├── CartNoti.js
│ ├── ProductCard.js
│ └── Nav.js
├── Pages
│ ├── CartList.js // 상품 리스트 페이지
│ └── ProductList.js // 장바구니 페이지
├── Routes.js
├── index.js
└── store
├── actions
│ └── index.js // 액션 객체들
└── reducers
├── cartReducer.js // 개별 리듀서
└── index.js // 루트 리듀서