개발 이야기/Front-end

Next.js #2

sonoa 2023. 4. 13. 15:46
반응형
  • nextJS 는 를 to 가 아니라 href 로 받는다
<Link href="/"><Link>
  • 고정 된 스타일을 사용하기 위해서는 Layout component 를 따로 만들어서 app.js 에 적용한다.
  • 최상위 컴포넌트에 적용
import Layout from "../components/layout/Layout";
import "../styles/globals.css";

function MyApp({ Component, pageProps }) {
  return (
    <Layout>
      <Component {...pageProps} />
    </Layout>
  );
}

export default MyApp;

백엔드 데이터와 연결되었을 때?

  • 페이지가 렌더링 될 때, HTTP 요청을 보내려면, 이를 처리하기 위해 일반적으로 usrEffect 훅을 사용한다.
function HomePage() {
  const [loadedMeetups, setLoadedMeetups] = useState([]);

  useEffect(() => {
    // send a http request and fetch data
    setLoadedMeetups(DUMMY_MEETUPS);
  }, []);

  return <MeetupList meetups={loadedMeetups} />;
}

export default HomePage;

정적 페이지에 대한 데이터 가져오기 (Page Pre-Rendering)

정적인 생성 (일반적으로 사용하는 접근법)

  • 정적 생성에서 페이지 컴포넌트가 사전 렌더링 되는 시점은 애플리케이션을 빌드하거나 Next 프로젝트를 빌드하는 시점이다
  • 즉, 프로덕션용으로 빌드하는 시점이다.
  • 정적 생성에서는 기본적으로 요청이 서버에 도달 했을 때 서버에서 즉각적으로 페이지를 사전 렌더링하지 않는다.
  • 대신 개발자가 프로덕션용 사이트를 빌드할 때 사전 렌더링을 한다.
// props 로 받기 때문에 더이상 Hook이 필요 없다.
function HomePage(props) {
  return <MeetupList meetups={props.meetups} />;
}

// 비동기
// 여기 작성된 코드는 클라이언트 측에 들어가지 않기 때문에,
// 클라이언트 측에서 절대 실행되지 않는다.
// 이 코드는 빌드 프로세스 중에 실행되기 때문이다.
export async function getStaticProps() {
  // fetch data from an API
  return {
    props: {
      meetups: DUMMY_MEETUPS,
    },
  };
}

export default HomePage;

정적 사이트 생성 (SSG) 에 대한 추가 정보

  • npm run build 생성하기
  • 터미널에 관련 내용이 나옴
  • ● (SSG) automatically generated as static HTML + JSON (uses getStaticProps)

fallback

  • nextJS에게 paths 배열이 모든 지원되는 매개변수를 저장할지 아니면 일부만 저장할지 알려줌
  • 동적 페이지를 생성하는데 필요한 함수, nextJS 에게 어떤 동적 매개변수 밸류의 어떤 페이지가 generator 되어야 하는지 알려준다.
export async function getStaticPaths() {
  return {
    fallback: false,
    paths: [
      {
        params: {
          meetupId: "m1",
        },
      },
      {
        params: {
          meetupId: "m2",
        },
      },
    ],
  };
}
반응형

'개발 이야기 > Front-end' 카테고리의 다른 글

React 복습  (0) 2023.04.15
TypeScript 복습  (0) 2023.04.14
React Styling  (0) 2023.04.08
Next.js  (0) 2023.04.07
React 라이브러리 #8  (0) 2023.04.06