카테고리 없음

Redux (5) 장바구니 항목 수량 변경 및 삭제

하이고니 2023. 1. 26. 20:28

import, export 를 적절하게 해줬다는 가정 하에 해당 코드만 살펴보겠다.

 

 

Detail.js

 

Cart.js

 

cart 페이지의 표 안에는 세개의 버튼이 있다. (+, -, delete)

 

+ : 이 버튼을 누르면  reducer 안에 있는 countUp 함수가 작동한다. action으로는 el.id 를 받는다.

- : 이 버튼을 누르면 reducer 안에 있는 countDown 함수가 작동한다. action은 위와 같다.

delete : 이 버튼을 누르면 reducer 안에 있는 deleteItem 함수가 작동한다. action은 위와 같다.

 

store.js

 

countUp :

 

1. state 안에 있는 요소들의 id와 action으로 받은 id(map 안에서 해당 버튼과 연결된 항목의 id)가 같은 것만 골라서 배열을 만든다.

2. 그 배열에 있는 첫 번째 요소(id가 모두 다르다면 요소는 무조건 하나임)의 count 속성을 1 증가시킨다.

 

countDown :

 

1. state 안에 있는 요소들의 id와 action으로 받은 id(map 안에서 해당 버튼과 연결된 항목의 id)가 같은 것만 골라서 배열을 만든다.

2. 그 배열에 있는 첫 번째 요소(id가 모두 다르다면 요소는 무조건 하나임)의 count 속성을 1 감소시킨다.

 

addItem :

 

1. Detail.js의 action으로 받은 객체를 이용해 newItem 이라는 항목을 구성한다.

2-1. 구성한 항목의 id와 겹치는 것이 state에 있다면, 그 항목의 count 속성을 1 증가시킨다.

2-2. 없다면 state에 newItem을 추가한다.

3. state를 리턴한다. (이거 안하면 새로운 항목일 경우 추가가 안됨)

 

 

deleteItem :

 

1. state.findIndex 를 통해 action으로 받은 id와 일치하는 항목의 인덱스를 idx에 할당한다.

2. state에서 그 idx의 요소를 제거한다.