/
├── /React Custom Component
│ ├── README.md
│ ├── /public
│ └── /src
│ ├── /assets
│ ├─── /components
│ ├─── /pages
│ ├─── App.css
│ ├── App.js
│ ├── index.js
│ ├── logo.svg
│ ├── reportWebVitals.js
│ ├── setupTests.js
├ package.json
└ .gitignore
const [items, setItems] = useState(initialState.items); // 구매할 수 있는 상품 목록의 상태
const [cartItems, setCartItems] = useState(initialState.cartItems); // 장바구니에 담은 상품 목록의 상태
위 두 가지 상태를 가지고 있음
react-router-dom 라이브러리를 사용하고 있어 <Router>, <Switch>, <Route>
컴포넌트로 적절히 경로 분기를 시켜주어야 함.
<Nav>
컴포넌트를 렌더링함. 네비게이션 바이며, 장바구니에 담긴 상품의 개수를 표시해야 하기 때문에 cartItems
배열을 프롭스로 넘겨주어야 함.
<ItemListContainer>
컴포넌트를 렌더링함. 판매 중인 상품들을 표시하는 컨테이너
items
배열을 프롭스로 넘겨주어야 함.handleClick
함수의 구현을 위해 cartItems
배열과 setCartItems
상태변경함수를 프롭스로 넘겨주어야 함.<ShoppingCart>
컴포넌트를 렌더링함.
const [checkedItems, setCheckedItems] = useState(cartItems.map((el) => el.itemId))
체크박스 표시가 된 상품 목록의 상태를 가지고 있음.handleCheckChange(checked, id)
: 체크박스 표시가 된 상품들이 바뀔 때마다 'setCheckedItems'가 체크박스 표시가 된 상품들의 배열의 상태를 바꿔준다.handleAllCheck(checked)
: 전체선택 체크박스를 클릭했을 때 동작하는 함수handleQuantityChange(quantity, itemId)
: 상품의 수량을 추가하거나 줄일 때 동작하는 함수handleDelete(itemId)
: 장바구니에서 상품을 삭제할 때, 삭제버튼을 누르면 동작하는 함수 getTotal()
: 상품의 가격을 총합산 해주는 함수