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

home2 게시판 React 게시판 장바구니 기능 완성하기 가이드 질문

장바구니 기능 완성하기 가이드 질문

5 글 보임 - 1 에서 5 까지 (총 5 중에서)
  • 글쓴이
  • #25966

    박세진
    참가자

    강사님이 설명하신대로 해보니까 새로 추가한 항목은 id가 충돌이 나는지 수량이 안바뀌고, 여러 버그들이 있어서

    props.dispatch( {type : '항목추가', 데이터 : {id: 찾은상품.id, name : 찾은상품.title, quan : 1}} );

    이 부분을 제가

     

    let [cartIdCount, changingCartIdCount] = useState(0);

    (중략)

    <button
                  className="btn btn-danger"
                  onClick={() => {
                    changingCartIdCount(cartIdCount + 1);
                    props.dispatch({
                      type: "항목추가",
                      데이터: {
                        id: cartIdCount,
                        name: 찾은상품.title,
                        quan: 1,
                      },
                    });
                    history.push("/Cart");
                  }}
                >
                  장바구니 담기
                </button>

    이렇게 바꾸었습니다. 

    '장바구니 담기'버튼을 누르면 cartIdCount가 1이 증가하고, 해당 값이 id로 들어가서 자연스럽게 장바구니 배열에 id가 1부터 하나씩 쌓이는식으로 만들어 보려고 했는데요,

     

    여기서 문제가 '장바구니 담기' 버튼을 눌러도 cartIdCount값이 증가하질 않아요. 콘솔로 띄워보니까 버튼을 눌러도 cartIdCount값이 계속 0으로만 뜹니다....

    아무래도 버튼을 누르면 다른 화면으로 이동해서 그런가 changingCartIdCount(cartIdCount + 1); 이 부분이 동작을 안하는것같은데 어떻게 해야 이 함수를 동작 시킬 수 있을까요?

    #25981

    codingapple
    키 마스터

    버튼누르면 cartIdCount 가 +1 되고있는건 맞습니다 근데 state변경함수는 다른 코드들보다 좀 늦게 동작할 뿐입니다

    늦게 동작하는게 싫으면 state말고 일반변수도 좋을듯요 

    #26542

    박세진
    참가자

    state함수가 안돼서 강사님 말대로

     

    let cartIdCount = 0;

    (중략)

    <button
                  className="btn btn-danger"
                  onClick={() => {
                    cartIdCount = cartIdCount+1;

                    console.log(cartIdCount);
                    props.dispatch({
                      type: "항목추가",
                      데이터: {

                        id: cartIdCount,
                        name: 찾은상품.title,
                        quan: 1,
                      },
                    });
                    history.push("/Cart");
                  }}
                >
                  장바구니 담기
                </button>

     

    이렇게 하고 실행을 해보았더니 버튼을 눌렀을 때 cartIdCount = cartIdCount+1; 이부분이 딱 한번만 실행되고(콘솔창을 보니까 cartIdCount값이 1이 되더라구요), 두번째부터는 cartIdCount값이 안올라가요. 버튼을 계속 눌러보아도 cartIdCount값이 1입니다...

    무슨문제인걸까요?

    #26561

    codingapple
    키 마스터

    state변경해버리면 컴포넌트도 재렌더링이 되어서 그런게 아닐까요

    변수를 바깥에 만들거나 그래봅시다  

    #26565

    박세진
    참가자

    변수를 바깥에 만들라는게 무슨말씀인지 잘 모르겠습니다...버튼태그의 바깥이라면 이미 

    let cartIdCount = 0;

    이 코드가 버튼태그 바깥에 위치하고있습니다.

    state가 안되어서 일반변수를 만들고, 버튼을 누르면 해당 변수에 +1이 되게끔 만든것인데 왜 안되는지 모르겠네요..

    ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

     

    아예 Detail함수 바깥으로 옮겼더니 되네요 감사합니다! 해결했습니다

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

About

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

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

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