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

home2 게시판 React 게시판 react-query 질문.

react-query 질문.

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

    서동현
    참가자
    선생님께서 알려주신 코드대로 쳤는데 페이지새로고침할때 로딩중은 잠시 뜹니다만,
    로딩이 되고나서 result.data.name은 보여주지 못하고있습니다.
    콘솔창에 찍어보면 Mark라고 정상적으로 나오고 있습니다.
    
    {result.data && result.data.name && <p>Name: {result.data.name}</p>}
    이 코드로 바꿔서도 해봤는데 안뜨고있습니다. <div>안에다가 아무 글씨나 치면 그 글자는 나옵니다.
    #73361

    서동현
    참가자
    import logo from './logo.svg';
    import './App.css';
    import 'bootstrap/dist/css/bootstrap.min.css';
    import { Button, Container, Nav, Navbar, Row, Col } from 'react-bootstrap';
    import { useState, createContext,useEffect } from 'react';
    import data from './data.js';
    import Detail from './routes/Detail.js';
    import Cart from './routes/Cart.js';
    import Balenciaga from './routes/Balenciaga.js';
    import { Routes, Route, Link, useNavigate, Outlet, json } from 'react-router-dom';
    import axios from 'axios';
    import { useQuery } from 'react-query';
    let Context1 = createContext();
    function App() {
    
    
      let [shoes,setShoes] = useState(data);
      let [buttonClick,setButton] = useState(1);
      let navigate = useNavigate();
      
      let result = useQuery('작명',()=>{
        axios.get("https://codingapple1.github.io/userdata.json").then((a)=>{
          console.log(a.data.name)
          return a.data
        })
      })
     
      return (
        <div className="App">
    
    
          <Navbar bg="dark" variant="dark">
            <Container>
              <Navbar.Brand href="#home">Dongmay</Navbar.Brand>
              <Nav className="me-auto">
                <Nav.Link onClick={() => navigate("/")}>Home</Nav.Link>
                <Nav.Link onClick={() => navigate("/detail")}>Detail</Nav.Link>
                <Nav.Link onClick={() => navigate("/cart")}>Cart</Nav.Link>
              </Nav>
              <Nav>asdf
              {result.data && result.data.name && <p>Name: {result.data.name}</p>}
              
              </Nav>
            </Container>
          </Navbar>
    
    
          <Routes>
            <Route path='/' element={
              <div>
                <div className='main-bg' ></div>
                <Container>
                  <Row>
                    {
                      shoes.map(function (a, i) {
                        return (
                          <Col md={4}>
                            < img src={`https://codingapple1.github.io/shop/shoes${i+1}.jpg`} alt="shoes" width="80%"
                            onClick={()=>{
                              navigate(`/detail/${i}`)
                            }}
                            />
                            <h4>{shoes[i].title}</h4>
                            <p>{shoes[i].price}</p>
                          </Col>
                        )
                      })
                    }
                  </Row>
                  <Button onClick={() => {
                    setButton(buttonClick+1);
                    if(buttonClick == 1){
                      axios.get('https://codingapple1.github.io/shop/data2.json')
                      .then((결과) => {       //ajax 요청성공
                        const copy = [...shoes, ...결과.data]
                        setShoes(copy)
                      })
                      .catch(() => {           // ajax 요청실패
                      })
                    }else if(buttonClick == 2){
                      axios.get('https://codingapple1.github.io/shop/data3.json')
                      .then((결과) => {       //ajax 요청성공
                        const copy = [...shoes, ...결과.data]
                        setShoes(copy)
                      })
                      .catch(() => {           // ajax 요청실패
                      })
                    }else{
                      alert("더이상 상품이 없습니다.")
                    }
                   
                  }}>더보기</Button>
                </Container>
              </div>
            } />
            <Route path='/detail/:id' element={      
              <Detail shoes={shoes} />
              } />
              <Route path='/cart' element={<Cart/>}/>
              <Route path='/balenciaga' element={<Balenciaga/>}/>
            <Route path='/event' element={<Event></Event>}>
              <Route path='one' element={<div>첫 주문시 쿠폰 증정</div>} />
              <Route path='two' element={<div>생일기념 쿠폰 받기</div>} />
            </Route>
          </Routes>
        </div>
      );
    }
    function Event() {
      return (
        <div>
          <h4>오늘의 이벤트</h4>
          <Outlet></Outlet>
        </div>
      )
    }
    
    
    export default App;
    코드는 현재 이러합니다.
    #73373

    codingapple
    키 마스터
    useQuery(['작명'] 해야할걸요
    #73396

    서동현
    참가자
    안됩니다..
    해보니깐 중괄호를 빼야 되는것같습니다..
      let result = useQuery(['작명'],()=>{
        axios.get("https://codingapple1.github.io/userdata.json").then((a)=>{
          console.log(a.data.name)
          return a.data
        })
      })
    //이건 안됐습니다.
    
    
      let result = useQuery('작명',()=>
        axios.get("https://codingapple1.github.io/userdata.json").then((a)=>{
          console.log(a.data.name)
          return a.data
        })
      )
    이걸로 하니깐 되네요. 함수의 return값에 대한 이해가 부족했던것 같습니다.
    
    스터디한 결과로 코드는
     let result = useQuery(['작명'], async() => {
        try {
          const response = await axios.get("https://codingapple1.github.io/userdata.json")
          return response.data
        }catch(error){
          console.log(error)
          return {name : "errorrrr"}
        }
        
    })
    
    이렇게 변경해서 짜봤습니다.
    
    
    
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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