강의 내용을 다 듣고 나서 같은 항목을 추가 했을 때,
장바구니에 새로 추가되는 것이 아닌 수량만 추가되게 하는 부분을 적용했습니다.
이런 방법, 저런 방법 테스트 해봤는데
기능적으로는 잘 되긴 하지만 이런 코드 방식이 맞는 건가 싶어서요..
function reducer(state = 초기값, 액션) {
if ( 액션.type === '항목추가') {
let copy = [...state];
let index;
copy.map( (el)=> {
if ( el.id === 액션.payload.id) {
index = copy.indexOf(el);
}
});
if ( index ) {
copy[index].quan++;
} else {
copy.push(액션.payload);
}
return copy;
}
copy를 콘솔로그로 보면 배열 안에 오브젝트로 되어 있어서
기존에 추가된 항목이 배열의 몇 번째 인지 확인이 어려워 map 함수로
기존 state 에서 아이디 값들 중에 내가 클릭한 상품의 아이디 값이 있는 지 확인을 하고
그 해당 아이디 값이 있을 때 copy의 배열 순서를 저장해뒀다가
if문으로 수량 증가 또는 push를 해주었습니다.
코드 리뷰 부탁드립니다..!!