• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 React 게시판 상품페이지에서 추가하기를 눌렀을때

상품페이지에서 추가하기를 눌렀을때

4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 글쓴이
  • #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들에게 배열에 적용될수있게끔짜면 될까요?

     

     

     

     

    #14119

    codingapple
    키 마스터

    혹시 새로고침되어서 그런게 아닐까요 주소창에 /cart 이런거 입력하면 항상 새로고침 됩니다

    웹앱들은 새로고침하면 당연히 자바스크립트도 다시 불러오니까 state도 초기화됩니다

    #14151

    황정후
    참가자

    새로고침은.. 아닌것같습니다 선생님 수업에있었던 똑같은상품을 장바구니에추가시 해당상품이 2번추가되는게아니라 해당상품이+1만되게끔하는 코드를 보고있는데 그게 안되고있어서 그렇습니다 ㅠㅠ 

     

    새로고침을 할시에는 /cart에서는 모든상품이 날라가는것을 확인했습니다 진짜데이터베이스에서 불러오는것이 아니여서 당연히 날라가는거맞죠?

    #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

    이래야할듯요? 

     

4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관, 개인정보처리방침
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠