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

home2 게시판 React 게시판 [ajax2] 더보기 버튼 클릭 후 로딩 alert 띄우기 관련

[ajax2] 더보기 버튼 클릭 후 로딩 alert 띄우기 관련

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

    hjlee
    참가자
    ajax2 숙제3번. '더보기' 버튼을 클릭한 후에는 '로딩중'이라는 글자 넣는 것에 관한 질문입니다.
    구현하기 위해 코드를 다음과 같이 작성했습니다. (주요 부분에 bold 처리했습니다)
    
    let [loading, setLoading] = useState(false);
    
    <button onClick={() => {
        setLoading(true);
        setBtnClickCnt(btnClickCnt + 1);
        console.log(btnClickCnt);
        btnClickCnt == 1 ?
        axios.get('https://codingapple1.github.io/shop/data2.json')
        .then((result) => {
            let newShoesList = [...props.shoesList];
            newShoesList = newShoesList.concat(result.data);
            props.setShoesList(newShoesList);
            setLoading(false);
        })
        .catch(() => {
            console.log('AJAX 요청 실패');
            setLoading(false);
        }) :
        btnClickCnt == 2 ? 
        axios.get('https://codingapple1.github.io/shop/data3.json')
        .then((result) => {
            let newShoesList = [...props.shoesList];
            newShoesList = newShoesList.concat(result.data);
            props.setShoesList(newShoesList);
            setLoading(false);
        })
        .catch(() => {
            console.log('AJAX 요청 실패');
            setLoading(false);
        }) :
        alert("더 이상 상품이 존재하지 않습니다.");
        setLoading(false);
    }}>더보기</button>
    { loading ? <p>로딩 중입니다...</p> : null }
    
    alert() 아래에 setLoading(false)를 넣지 않으면 alert 후에, 로딩 중이라는 글자가 뜨길래  setLoading(false)라는 코드를 넣었습니다. 그랬더니 버튼을 눌렀을 때 로딩 중이라는 글자가 뜨지 않습니다. 제가 생각하기에는 중첩 삼항연산자에서 : 뒤에 두 줄(alert, setLoading(false))가 하나로 묶이는 처리가 되지 않아서 그런 것 같은데 혹시 그런 것일까요? 만약 그렇다면 삼항연산자보다 맨 마지막 setLoading(false)가 먼저 실행되는 것인가요?
     
    #132080

    codingapple
    키 마스터
    state변경함수 주변에 있는 alert 등의 코드가 먼저 실행되고나서 state가 변경되어서 그럴 뿐입니다
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 호 / 개인정보관리자 : 박종흠