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

home2 게시판 React 게시판 리액트에서 axios사용 질문드립니다.

리액트에서 axios사용 질문드립니다.

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

    형산
    참가자

    -----------서버코드입니다----------------

     ( server.js )
    app.get("/title", function (req, res) {
      db.collection("post")
        .find()
        .toArray((에러, 결과) => {
          console.log(결과);

          res.send(결과);
        });
    });

     

    -----------리액트코드입니다----------------

    ( App.js)

    function App() {
      const [test, setTest] = useState([]);

      useEffect(() => {
        axios
          .get("/title")
          .then((res) => {
            console.log(res.data);
            setTest(...test, ...res.data);
            console.log(test);
          })
          .catch(() => {
            console.log("실패");
          });
      }, []);

    .

    .

    보다 시피 콘솔에   console.log(res.data); 는 데이터 값이 들어온것을 확인할 수 있습니다.

    근데   setTest(...test, ...res.data);
            console.log(test);

    test라는 state값에 axios를 통해 들어온값을 설정해주었는데 콘솔에 [ ] 라고 빈값이 찍혀들어옵니다.

    axios를 통해 받은 데이터를 state에 저장하는 방법이 위코드에서 잘못된 부분이 있나요 ???

    #21371

    codingapple
    키 마스터

    데이터는 test에 잘 들어있을걸요

    그냥 console.log(test)가 setTest() 보다 먼저 실행되서 그런듯 합니다 

    #21401

    형산
    참가자

    아아.. 이거 강의에서 배운 내용이었는데, 깜빡했군요

    그래서 수정해봤는데 문제가 하나 생겼습니다.

    setTest(...test, ...res.data);
    console.log(test);

    ▲ console.log(test); 이 부분을

    useEffect(() => {
        console.log(test);
      }, [test]);

    ▲ useEffect로 위에 빼서 setTest(...test, ...res.data); 이후에 실행되도록 해주었습니다.

    그랬더니

    test에 데이터가 들어오긴했는데 _id:37인 가장 첫번째의 데이터만 들어오고, 나머지 19개의 데이터는 들어오지 않습니다.

     

    #21406

    형산
    참가자

    아 .. 이부분은 해결했습니다

    아 이부분은      

      const [test, setTest] = useState(null);로하고

      setTest(...test, ...res.data); 부분을 setTest(res.data);로 바꾸니 전체 데이터가 들어오는군요.

    근데 이 받아온 데이터를 화면에 출력하고싶은데

    {test === true ? { test } : null} 우선 이렇게 해봤는데.. 아무것도 뜨지않습니다. 무엇이 문제일까요 ?

     

    #21420

    형산
    참가자

    휴 구글링 하다보니 해결했습니다 ! 코딩이 쉽지않군요.. ㅠ

    #21425

    codingapple
    키 마스터

    test라는 변수를 true와 비교하는게 아니라 null이랑 비교하면 되겠군요 

6 글 보임 - 1 에서 6 까지 (총 6 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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