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

home2 게시판 React 게시판 장바구니 기능, 주문시 항목추가 안됨(에러X)

장바구니 기능, 주문시 항목추가 안됨(에러X)

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

    김건엽
    참가자

    강의 제목: 장바구니 기능 완성하기 가이드

     

    detail 페이지에서 주문하기 눌렀을 때, 아이디가 같으면 수량만 늘어나고, 아이디가 다르면 새로운 항목으로 추가하는 기능에 대한 질문입니다.

    강사님이 위 기능을 설명하기 전에 혼자 만들어보다가 강의를 봤습니다.

    --------------------------------------------------------------------------------------------------------------

    map을 활용한 제가 생각한 방법

    결과: 아이디가 같을 때 수량만 1씩 올라가나, 새로운 항목이 추가되지는 않습니다.

    코드:

    let defState = [
    {id: 6, name:'멋진신발', quan: 2},
    {id: 3, name: '빨간신발', quan: 4},
    {id: 4, name: '아뵤신발', quan: 2}
    ]

    function reducer(state=defState, action){
    if (action.type === '항목추가'){

    let copy = [...state];
    copy.map((a)=>{
    if(a.id==action.payload.id){
    a.quan++;
    return copy;
    } else{
    copy.push(action.payload);
    console.log(copy)
    return copy;
    }
     
    })

    --------------------------------------------------------------------------------------------------------------

    강사님 제공 방법

    결과: 당연하게 잘 돌아갑니다.

    코드:

    let defState = [
    {id: 6, name:'멋진신발', quan: 2},
    {id: 3, name: '빨간신발', quan: 4},
    {id: 4, name: '아뵤신발', quan: 2}
    ]

    function reducer(state=defState, action){
    if (action.type === '항목추가'){

    let found = state.findIndex((a)=>{return a.id===action.payload.id});
    if (found>=0){
    let copy = [...state];
    copy[found].quan++;
    return copy
    }
    else{
    let copy = [...state];
    copy.push(action.payload);
    return copy;

    })

     

    #30602

    codingapple
    키 마스터

    let newCopy = [1,2,3].map((a)=>{
      if(a == 2){
        return a + 1;
      } else {
        return a
      }
    });
    map은 이렇게 해야 안에 있는 하나 항목만 +1 시켜줄듯요

    그 다음에 newCopy를 return 하거나 그러면 됩니다 

     

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

About

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

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

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