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

home2 게시판 Next.js 게시판 데이터 출력

데이터 출력

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

    참가자
    json 형식으로 만든 오브젝트 배열을 useState()에 저장하고
    useEffect()와 Math.random()를 이용하여 순서를 섞은 후 map()을 이용해 출력하는데 섞어놓은 순서대로 출력되지 않습니다.
    
    return문에 {console.log(data)} 로 출력해보면 콘솔창에는 섞인 순서대로 랜덤으로 출력되지만
    터미널에는 섞이기 전 순서대로 출력되네요ㅜㅜ
    
    대체 왜 콘솔창과 터미널의 값이 다르게 나오는 건가요?
    
    
    
    
    #97835

    codingapple
    키 마스터
    터미널엔 서버측 실행결과만 보여주는데 useEffect는 서버에서 실행되지 않아서그런듯요
    #97915

    참가자
      const datas = require("/public/data/data.json");
      const [data, setData] = useState(datas);
      function shuffle(array) {
        return array.sort(() => Math.random() - 0.5);
      }
      useEffect(() => {
        setData(shuffle(data));
      }, []);
      return (
        <div className="Section">
          {datas.map((item, i) => {
            return (
    데이터를 가져와서 state에 넣고 페이지 로드시마다 셔플함수를 사용해서 섞어준 후 map()으로 출력하는데 계속 섞이기 전 순서대로만 출력됩니다.
    코드 내에서 변경사항이 생겨서 저장 했을 때 가끔 랜덤으로 바뀌었다가도 페이지를 새로고침하면 또 순서대로 정렬되는데 대체 뭐가 문제인건가요ㅠ
    순서나 함수 사용에 문제가 있는 건가요? 따로 디비는 사용하지 않고 json 파일 만들어서 출력하고 있습니다!!
    #97931

    codingapple
    키 마스터
    require 문법은 컴포넌트 바깥에서 씁시다
    #97946

    참가자
    컴포넌트 바깥으로 빼서 props로 받아 사용하는데 바뀌기 전 데이터를 보여준 후 섞인 데이터로 출력합니다..
    
    useEffect()가 두 번 실행되는건가 해서 
    const nextConfig = {
      reactStrictMode: false,
    };
    도 해봤는데 이게 아니네요
    
    useState()에 false를 넣었다가 useEffect()가 실행될 때 함께 true로 바꿔서 true면 출력하게 할까 시도해봤는데 data.map()으로 출력하는 부분에서 에러가 나더라고요
    성공하더라도 로딩에 시간이 걸릴 것 같은데 이 방법을 사용하는게 맞나요?
    
    
    
    #97989

    codingapple
    키 마스터
    원래 useEffect보다 html이 먼저 실행되어서 그런듯요 
    컴포넌트바깥에서 데이터 셔플한번하고 html에 그거 박아봅시다
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 호 / 개인정보관리자 : 박종흠