-
글쓴이글
-
2021년 8월 26일 19:41 #14110
황정후참가자상품페이지에서 장바구니에 추가하기 이후
만약 상품의 원래 갯수가 1개이고 장바구니에 추가하면 1개가 나와야하는걸로알고있습니다그리고 거기서 +나-를 누르면 상품의 갯수가 줄어들게끔 되어있는데요
근데 제가 지금 코딩을 잘못한건지 ... 상품디테일페이지에서 다시 장바구니를 눌렀을경우 해당상품이 다시 추가되는거이아닌 상품의 갯수가 +1이 되어야하는데 상품의 갯수는 분명 +1이 됐음에도 불구하고 그 +1된값이 덮어씌워지지않아 전의 값이 그대로 남아있는상태입니다
그래서 이부분을 해결하고싶은데 어떻게 해야할지 모르겠습니다
"
function reducer(state = storeValue , action){
if (action.type === 'addCart'){
let copyStoreValue = [...state];if(copyStoreValue.some(copyStoreValue=>copyStoreValue.id === action.payload.id)){
console.log('상품이 이미추가되어 상품의 수량만 상승시킴');
console.log('상품의 아이디값은 ',action.payload.id , '추가된 상품의 id가 중복됩니다');
console.log('처음설정된 상품갯수',action.payload.quan);
action.payload.quan++;
console.log('숫자가더해진 상품갯수',action.payload.quan);
// 여기서 장바구니에 추가된 상품의 갯수가 늘어난것을 확인console.log(copyStoreValue,"test");
//다만 업데이트가 안됨 다시 copyStoreValue를 변경해주는작업 필요// console.log(copyStoreValue.some(copyStoreValue=>copyStoreValue.id),'테스트중');
return copyStoreValue;
} else {
console.log('isset 안됨');
copyStoreValue.push(action.payload);
console.log(action.payload.quan,'이거');
return copyStoreValue;
}// copyStoreValue.push(action.payload);
// console.log(copyStoreValue.id,'이거');
// return copyStoreValue;
}
if (action.type === 'addValue'){
let copyStoreValue = [...state];
copyStoreValue[action.payload].quan++;
return copyStoreValue
} else if (action.type === 'downValue'){
let copyStoreValue = [...state];
copyStoreValue[action.payload].quan--;
return copyStoreValue
} else{
return state;
}
}"
이렇게 되어있습니다 ㄷㄷ..
다시한번 똑같은 상품을 장바구니에 추가했을때 제품의 갯수가 상승하는건 확인했는데 그게 배열에는 적용이안되는것같은데 어떻게하면 배열에 적용할수있을까요
그리고 추가로 만약 갯수가 1개인 상품을 장바구니에 추가후에 +1을 눌른다음(총합 2) 뒤로가기를 눌러 다시한번 장바구니를 추가할경우 이미 배열에 저장되어있는 1이라는 값이 +버튼을눌러서 2로 늘렸다고해도 그게 배열에저장되는게 아니기때문에 따로 동작할것같은데
같이 동작하게 하고싶으면 +와- 버튼을 눌렀을때의 각각 action들에게 배열에 적용될수있게끔짜면 될까요?
2021년 8월 26일 22:47 #14119
codingapple키 마스터혹시 새로고침되어서 그런게 아닐까요 주소창에 /cart 이런거 입력하면 항상 새로고침 됩니다
웹앱들은 새로고침하면 당연히 자바스크립트도 다시 불러오니까 state도 초기화됩니다
2021년 8월 27일 18:03 #14151
황정후참가자새로고침은.. 아닌것같습니다 선생님 수업에있었던 똑같은상품을 장바구니에추가시 해당상품이 2번추가되는게아니라 해당상품이+1만되게끔하는 코드를 보고있는데 그게 안되고있어서 그렇습니다 ㅠㅠ
새로고침을 할시에는 /cart에서는 모든상품이 날라가는것을 확인했습니다 진짜데이터베이스에서 불러오는것이 아니여서 당연히 날라가는거맞죠?
2021년 8월 27일 20:03 #14154
codingapple키 마스터if(copyStoreValue.some(copyStoreValue=>copyStoreValue.id === action.payload.id)){
action.payload.quan++;
return copyStoreValue;
이게 이상한거 같은데요action.payload 이건 아마 {id : 0} 이런 object일텐데 거기에 quan++ 붙여봤자 아무일도 일어나지 않습니다
var index = 지금 action.payload.id를 가진 상품이 copyStoreValue에서 몇번째에 있는지;
copyStoreValue[index].quan++;
return copyStoreValue
이래야할듯요?
-
글쓴이글
- 답변은 로그인 후 가능합니다.