•
페이지 컴포넌트는 Client Side 렌더링이 된다.
•
페이지 컴포넌트는 데이터를 Props로 전달받도록 해야한다.
import MeowArticle from "@/app/components/MeowArticle";
import { Product, getProducts } from "@/service/products";
import Link from "next/link";
type Props = {
  products: Product[];
};
export default function ProductsPage({ products }: Props) {
  return (
    <>
      <h1>제품 소개 페이지</h1>
      <ul>
        {products.map((p, i) => (
          <li key={i}>
            <Link href={`/products/${p.id}`}>{p.name}</Link>
          </li>
        ))}
      </ul>
      <MeowArticle />
    </>
  );
}
JavaScript
복사
•
하위 코드는 서버상에서 실행이 된다.
// SSG OR ISR
export async function getStaticProps() {
  const products = await getProducts();
  return {
    props: { products },
	  // revalidate: 10, // ISR
  };
}
// ssr
export async function getServerSideProps() {
	const products = await getProducts();
  return {
    props: { products },
  };
}
JavaScript
복사
요약: 
•
컴포넌트는 무조건 클라이언트 상에서 동작
•
next에서 정의한 함수는 서버 상에서 동작한다.
import MeowArticle from "@/app/components/MeowArticle";
import { Product, getProducts } from "@/service/products";
import Link from "next/link";
type Props = {
  products: Product[];
};
export default function ProductsPage({ products }: Props) {
  return (
    <>
      <h1>제품 소개 페이지</h1>
      <ul>
        {products.map((p, i) => (
          <li key={i}>
            <Link href={`/products/${p.id}`}>{p.name}</Link>
          </li>
        ))}
      </ul>
      <MeowArticle />
    </>
  );
}
// SSG OR ISR
export async function getStaticProps() {
  const products = await getProducts();
  return {
    props: { products },
	  // revalidate: 10, // ISR
  };
}
JavaScript
복사
import MeowArticle from "@/app/components/MeowArticle";
import { Product, getProducts } from "@/service/products";
import Link from "next/link";
type Props = {
  products: Product[];
};
export default function ProductsPage({ products }: Props) {
  return (
    <>
      <h1>제품 소개 페이지</h1>
      <ul>
        {products.map((p, i) => (
          <li key={i}>
            <Link href={`/products/${p.id}`}>{p.name}</Link>
          </li>
        ))}
      </ul>
      <MeowArticle />
    </>
  );
}
// SSR
export async function getServerSideProps() {
  const products = await getProducts();
  return {
    props: { products },
  };
}
JavaScript
복사
