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

home2 게시판 React 게시판 ajax 응용 문제 질문입니다!

ajax 응용 문제 질문입니다!

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

    정채진
    참가자
    안녕하세요 선생님
    
    아래 ajax 강의 응용 문제 3개 풀고 있는데, count 변수가 계속 초기화 되어서 못 하고 있습니다...
    
    응용1. 버튼을 2번 누르면 7,8,9번 상품을 가져와서 html로 보여주려면?
    응용2. 버튼을 3번 누르면 더 상품이 없다고 안내문을 띄우려면?
     
    응용3. 버튼을 누른 직후엔 "로딩중입니다" 이런 글자를 주변에 띄우고 싶으면?
    
    
    count 가 onclick 함수 안에서는 +1 이 실행되는데, onclick 끝난 후에 다시 0이 됩니다..
    js 버튼 클릭 횟수 세는 예제들도 찾아서 봤는데도 해결을 못해서 질문 남깁니다 ㅠㅠ
    
    
    function App() {
      let [shoes, setShoes] = useState(data);
      let navigate = useNavigate();
      let count = 0;
      return (
        <div className="App">
          <Navbar bg="light" expand="lg">
            <Container>
              <Navbar.Brand href="#home">Shop</Navbar.Brand>
              <Navbar.Toggle aria-controls="basic-navbar-nav" />
              <Navbar.Collapse id="basic-navbar-nav">
                <Nav className="me-auto">
                  <Nav.Link onClick={() => {navigate('/')}}>Home</Nav.Link>
                  <Nav.Link onClick={() => {navigate('/detail/0')}}>Detail</Nav.Link>
                </Nav>
              </Navbar.Collapse>
            </Container>
          </Navbar>
          <Routes>
            <Route path='/' element={
              <>  
                <div className='main_bg'></div>
                <Container>
                <Row>
                  {
                    shoes.map(function(a,i){
                      return (
                      <Card a = {a} i = {i}></Card>
                      )
                    })
                  }        
                </Row>
                </Container>
                
                {  count < 2 ?
                  <button onClick={() => {
                    count = count + 1;
                    console.log(count) // count = 1 출력
                    axios.get("https://codingapple1.github.io/shop/data" + (count+1) + ".json")
                      .then((result) => {
                        let copy = [...shoes];
                        copy = copy.concat(result.data);  
                        setShoes(copy);
                      })
                      .catch(() => {
                        console.log('failed')
                      })
                  }}>더 보기</button>
                  : null
                }
                {console.log(count) /* count = 0 출력 */}
              </>
            }/>
    #50991

    codingapple
    키 마스터
    재렌더링되면 function 안에있는 코드들을 다시 읽습니다 
    변수를 함수 바깥에 만들거나 합시다
    #51002

    정채진
    참가자
    App 도 함수라는 걸 생각을 못 했네요....
    감사합니다 해결 되었어요!!
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 호 / 개인정보관리자 : 박종흠