[REACT] 13_장바구니(카트) 기능 구현 이슈 수정
2021. 12. 27. 13:16ㆍReact/React 쇼핑 앱
반응형
장바구니(카트) 기능 구현 이슈 수정
기존
동일한 상품카드의 장바구니에 여러번 추가할 경우 계속 새로운 중복 데이터가 등록
수정
동일한 상품카드의 장바구니에 여러번 추가할 경우 동일한 상품의 수량만 1씩 증가
index.js
더보기
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import { BrowserRouter } from 'react-router-dom';
import { combineReducers, createStore } from 'redux';
import { Provider } from 'react-redux';
let reducer1State = [];
export const reducer1 = (state = reducer1State, action) => {
if (action.type === 'addObj') {
let foundObjIdx = state.findIndex((obj) => {
return obj.id === action.data.id
});
console.log('찾아진 객체 인덱스 : ' + foundObjIdx);
if (foundObjIdx >= 0) {
let _state = [...state];
_state[foundObjIdx].qty++;
return _state;
} else {
let _state = [...state];
_state.push(action.data);
console.log(_state);
return _state;
}
} else {
return state;
}
}
let store = createStore(combineReducers({
reducer1
}));
ReactDOM.render(
<React.StrictMode>
<BrowserRouter>
<Provider store={store}>
<App />
</Provider>
</BrowserRouter>
</React.StrictMode>,
document.getElementById('root')
);
// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();
Cart.js
더보기
import { Table } from "react-bootstrap";
import { useSelector } from "react-redux";
function Cart(props) {
let state = useSelector((state) => state);
return (
<>
<Table responsive>
<thead>
<tr>
<th>#</th>
<th>상품명</th>
<th>가격</th>
<th>수량</th>
<th>변경</th>
</tr>
</thead>
<tbody>
{
state.reducer1.map((obj, i) => {
return (
<tr key={i}>
<td>{obj.id}</td>
<td>{obj.name}</td>
<td>{obj.price}</td>
<td>{obj.qty}</td>
<td>
<a class="btn btn-secondary" role="button">+</a>
<a class="btn btn-secondary" role="button">-</a>
</td>
</tr>
)
})
}
{/* <tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr> */}
</tbody>
</Table>
</>
)
}
export default Cart;
반응형
'React > React 쇼핑 앱' 카테고리의 다른 글
[REACT] 15_CSS = > SCSS 변환 (0) | 2021.12.27 |
---|---|
[REACT] 14_장바구니(카트) 기능 구현 2 (0) | 2021.12.27 |
[REACT] 12_장바구니(카트) 작성 및 브라우저 라우팅 (0) | 2021.12.27 |
[REACT] 11_상세페이지 작성 2 : 리덕스 상태관리 (0) | 2021.12.27 |
[REACT] 10_상세페이지 작성 1 (0) | 2021.12.27 |