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

home2 게시판 React 게시판 선생님 useEffect로 ajax응용문제2번 버튼지우기 질문있습니다

선생님 useEffect로 ajax응용문제2번 버튼지우기 질문있습니다

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

    김영인
    참가자
    (App 컴포넌트의 상단 return() 외부)
    화면 캡처 2023-10-01 175902
    (App 컴포넌트의 return()내부)
    화면 캡처 2023-10-01 175924
    유저가 상품더보기 버튼을 누르면 axios로 데이터를 받아와 products를 보여주는 기능 구현중입니다.
    1. 유저가 버튼 누를때마다 json을 순차적으로 받아옴
    2. 더이상 받아올 json이 없다면 .catch()문을 통해 로딩화면이 사라짐, alert()띄워줌, btnInvisible의 state를 바꿔줌
    
    근데 여기서 문제는 useEffect(()=>{},[btnInvisible]) 을 활용해서 btnInvisible state가 변경될때 useEffect가 실행되어야 하는데
    메인페이지가 랜더링 되자마자 useEffect가 실행되어 버튼이 그냥 사라집니다.
    화면 캡처 2023-10-01 180345
    위 사진처럼 되어야하는데 아래 사진처럼 사라집니다.
    화면 캡처 2023-10-01 181002
    setTimeout은 적용되고 있습니다.
    왜 useEffect가 btnInvisible state가 변경되지 않았는데 작동하는지 궁금합니다.
    제 생각엔 .catch() 문 안의 setBtnInvisible로 state가 변경되어야만 useEffect가 실행되어야 할텐데.. 잘 모르겠습니다
    + 추가로 .catch()문 안에서 setBtnInvisible을 없애서 state가 변경되지 않도록 했지만 useEffect가 작동합니다.
    #99678

    codingapple
    키 마스터
    원래 [] 안에 뭐가 있어도 처음 렌더시 1회 실행됩니다
    #99680

    김영인
    참가자
    그럼 혹시 .catch로 더이상 불러올 데이터가 없을때 버튼을 지워주는 기능을 구현하는 방법 힌트 주실 수 있으신가요?
    #99681

    codingapple
    키 마스터
    btnInvisible이 1이면 버튼 보여주지말라고 조건문 쓰면 끝일듯요
    #99682

    김영인
    참가자
    화면 캡처 2023-10-01 211236
    와.. 진짜 한번에 고쳐졌습니다 ㅠㅠㅠㅠㅠ
    항상 많이 배우겠습니다!!
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 호 / 개인정보관리자 : 박종흠