
2025.1.15 수요일의 공부기록
Next.js의 Link 컴포넌트는 클라이언트 사이드 네비게이션 성능을 최적화하기 위해 prefetch 속성을 제공한다.
prefetch는 백그라운드에서 라우트와 데이터를 미리 로드하여 사용자가 링크를 클릭했을 때 빠른 페이지 전환을 가능하게 한다.
prefetch란?prefetch는 백그라운드 로드 기능으로, Link 컴포넌트가 뷰포트에 들어올 때 해당 라우트와 데이터를 미리 로드한다.
이를 통해 클라이언트 사이드 네비게이션 속도를 대폭 향상시킬 수 있다.
prefetch는 기본적으로 활성화되어 있으며, Link 컴포넌트가 초기 로드되거나 뷰포트에 진입하면 작동한다.prefetch 속성의 기본값은 null이다. 이 경우 Next.js가 자동으로 경로에 따라 prefetch 동작 여부를 결정한다.prefetch 동작 방식초기 렌더링
페이지 로드 시, 뷰포트에 있는 모든 Link 컴포넌트에 대해 prefetch가 작동한다.
스크롤 중 동작
사용자가 스크롤하여 Link 컴포넌트가 뷰포트에 들어오면 Next.js가 해당 라우트를 미리 로드한다.
클릭 시 빠른 페이지 전환
prefetch된 라우트와 데이터가 이미 로드되어 있어, 클릭 시 빠르게 전환된다.
prefetch 속성의 사용 방법prefetch 속성을 명시적으로 설정하지 않아도 기본적으로 prefetch가 활성화된다.
import Link from "next/link";
export default function HomePage() {
return (
<div>
<h1>Home Page</h1>
<Link href="/about">Go to About</Link>
</div>
);
}
"use client";
import Link from "next/link";
import styles from "../../styles/movie.module.css";
import { useRouter } from "next/navigation";
interface IMovieProps {
title: string;
id: string;
poster_path: string;
}
export default function Movie({ title, id, poster_path }: IMovieProps) {
const router = useRouter();
const onClick = () => {
router.push(`/movies/${id}`);
};
return (
<div className={styles.movie}>
<img src={poster_path} alt={title} onClick={onClick} />
<Link prefetch href={`/movies/${id}`}> //prefetch 적용
{title}
</Link>
</div>
);
}
prefetch 활성화
<Link href="/about" prefetch={true}>
Go to About (Prefetch Enabled)
</Link>
prefetch 비활성화
<Link href="/about" prefetch={false}>
Go to About (Prefetch Disabled)
</Link>
prefetch가 필요한 경우와 비활성화가 적합한 경우prefetch 동작 확인 방법prefetch 동작은 프로덕션 환경에서만 활성화되므로, 개발 환경에서는 테스트할 수 없다.
npm run buildnpm start자세한 내용은 Next.js 공식 문서를 참고.