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

home2 게시판 React 게시판 장바구니 기능 완성하기 가이드 관련해서 오류입니다.

장바구니 기능 완성하기 가이드 관련해서 오류입니다.

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

    사과나무
    참가자

    // let copy = [...state]
        // copy.push(액션.payload)
        // return copy

     

    이부분 주석없애고 원래대로하면 1개씩 상품 id를이용해 장바구니에 추가가되는데

    같은 물건일경우 +1만 하고싶을때

     

    function reducer(state = 초기값, 액션){ //es6 신문법, 기본파라미터 문법 데이터 초기값을 그냥 넣는다.
    if(액션.type ==='항목추가'){

    let copy = [...state]
    copy.push(액션.데이터)
    return copy
    //state안에 id : 액션.데이터 인게 있는지
    // let found = state.findIndex((a)=>{ return a.id === 액션.데이터.id })//array안에서 원하는 데이터 찾아주는 함수, find도됨
    // if(found >=0){

    // let copy = [...state]
    // copy[found].quan++
    // return copy

    // }else{
    // let copy = [...state]
    // copy.push(액션.데이터)
    // return copy
    // }
    }

    이와같이쓰면 history.push가 제대로 작동안하거나, 빈페이지만 나오는데 설명란에 코드랑 비교해도... 잘안되서요!

     

    확인부탁드려요

     

    =============================코드 전체===========================

     

    import React from 'react';
    import ReactDOM from 'react-dom';
    import './index.css';
    import App from './App';
    import reportWebVitals from './reportWebVitals';
    import { BrowserRouter } from 'react-router-dom'
    import { Provider } from 'react-redux';
    import {combineReducers, createStore} from 'redux';
    import { computeHeadingLevel } from '@testing-library/react';

    let alert초기값 = true
    function reducer2(state = alert초기값, 액션){
      if(액션.type==='닫기'){
        state = false
        return state
      }else{
        return state
      }
     

    }

    let 초기값= [{id : 0, name : '멋진신발', quan : 2},
    {id : 1, name : '멋진신발2', quan : 3},
    {id : 2, name : '멋진신발3', quan : 5},
    ]

    function reducer(state = 초기값, 액션){ //es6 신문법, 기본파라미터 문법 데이터 초기값을 그냥 넣는다.
      if(액션.type ==='항목추가'){

        // state안에 id:액션.데이터 인게 있냐?
        let 몇번째있니 = state.findIndex( (a)=>{ return a.id === 액션.데이터.id });
       
        if ( 몇번째있니 >= 0 ){
          let copy = [...state];
          copy[몇번째있니].quan++
        } else {
          let copy = [...state];
          copy.push(액션.데이터)
          return copy
        }
        // let copy = [...state]
        // copy.push(액션.payload)
        // return copy

    }else if(액션.type === '수량증가'){
        let copy = [...state]
        copy[액션.데이터].quan++
        return copy

      }else if(액션.type === '수량감소'){
        let copy = [...state]
        if(copy[액션.데이터].quan === 0){
          return copy
        }else{
          copy[액션.데이터].quan--
        }
        return copy
       
      }else{
        return state
      }
     
    }
    let store = createStore(combineReducers({reducer,reducer2}))

    ReactDOM.render(
      <React.StrictMode>
        <BrowserRouter>
        <Provider store={store}>
        <App />
        </Provider>
        </BrowserRouter>
       
      </React.StrictMode>,
      document.getElementById('root')
    );

    reportWebVitals();

    #25006

    codingapple
    키 마스터

    return copy가 빠진곳이 없는지 확인해봅시다

    #25008

    사과나무
    참가자

    해결했습니다!!! payload라고 되어있는걸 데이터로 안바꾼게문제였고

    개인적으로 데이터를 id값0,1,2 넣어서 더만들었는데 id값이 겹친거 2가지가 문제였어요 ㅎㅎ

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

About

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

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

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