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

home2 게시판 React 게시판 Ajax요청 과제 풀이 중에 문제가 생겼습니다

Ajax요청 과제 풀이 중에 문제가 생겼습니다

  • 이 주제에는 2개 답변, 2명 참여가 있으며 김선우4 년 전에 전에 마지막으로 업데이트했습니다.
3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 글쓴이
  • #9841

    김선우
    참가자

    저는 강의를 안본 상태에서 혼자 과제 코드를 작성할 때, 

    배열을 ... 을 사용해서 분해하고 새로운 배열을 만드는 문법을 모르고 있는 상태라서,

    강의 초반에 알려주신 state변경함수로 배열state를 수정하는 방법으로 작성을 했거든요 

     

    제가 이해한 대로면, 제가 작성한 코드가 정답 코드에 비해 조금 더 길 뿐

    결과적으로 state에 담겨있는 데이터는 같고 화면에도 똑같이 HTML이 생성되어야 한다고 생각하는데 

    제가 작성한 코드는 console.log를 찍었을 때 데이터는 제대로 6개로 추가된 것으로 나오지만

    화면에는 HTML이 생성되지 않구요 

    정답 코드는 console.log를 찍었을 때 데이터는 3개(기존 데이터)만 있는걸로 출력되고

    화면에는 HTML이 생성되는 차이가 있네요 ... 

     

    어떤 방식으로 접근해야 하는지 까지는 정답 코드와 동일하게 잘한 것 같아서 그냥 넘어갈까 했지만

    아무리 코드를 곰곰히 쳐다봐도 왜 이렇게 다른 결과가 나오는건지 이해가 되지 않아 질문 남겨봅니다

     

    <button className="btn btn-primary" onClick={()=>{ axios.get('https://codingapple1.github.io/shop/data2.json')

    .then((result)=>{

    let newArray = shoes;

    result.data.map((a,i)=>{

    newArray.push(result.data[i]) })

    shoes변경(newArray); })

    }}>더보기</button>

     

    이게 제가 작성한 코드인데, 기존 데이터를 ...으로 분해하고 서버에서 가져온 데이터도 ...으로 분해해서 state변경 함수로 담는 과정을 방법만 다르게 구현했다고 생각합니다. 

    임시 배열을 만들어서 기존 데이터를 담아두고, 서버에서 가져온 데이터에 map을 적용해서 임시 배열(기존 데이터를 담아둔) 뒤에 push방식으로 새로 받아온 데이터 배열의 값들을 추가해줬습니다. 

    state변경함수 바로 뒤에 console.log를 찍어봐도 배열[0]~배열[5] 까지 6개 데이터가 제대로 담겨져 있다고 나옵니다.

    그런데 화면에 HTML은 생성되지 않습니다... 

     반대로 정답 코드는 화면에 HTML이 제대로 생성되는데 console.log찍었을 때는 데이터가 3개만 있는걸로 나오구요 왜 이런 차이가 나오는 걸까요..? 

    #9847

    codingapple
    키 마스터

    let newArray = [...shoes]; 이렇게 카피를 안한것이 아닐까요 

    #9971

    김선우
    참가자

    그렇네요... 챕터1에서 설명했던 내용을 잊어서 생긴 문제였군요ㅜ 

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 호 / 개인정보관리자 : 박종흠