🙄궁금했던 이유
import Link from 'next/link';
import React from 'react';
const HomeHeader = () => {
return (
<header>
<div className="">
<Link href={'https://mail.google.com'} className=" hover:underline">
Gmail
</Link>
<Link href={'https://image.google.com'} className=" hover:underline">
Images
</Link>
<Link href={'/zinyu'} className=" hover:underline">
Zinyu
</Link>
</div>
</header>
);
};
export default HomeHeader;
Next.js로 구성한 프로젝트에서 Link 컴포넌트를 이용해 라우팅을 해줬습니다.
그런데 이게 빌드된 결과물을 보면 따로 어떤 처리가 들어간것도 아니라
그냥 href 속성만 가진 a태그로 변하게되는데 Link 컴포넌트는 어떻게 흰화면을 보여주지 않을 수 있는걸까요?
어떻게 새로고침 없이 url을 변경시켜줄 수 있는 것일까요?
https://hun1846.medium.com/next-js-link-db4a183a68a0
요 링크에서 확인해볼 수 있었고
https://coffeeandcakeandnewjeong.tistory.com/5
요기에서도 확인할 수 있지만 글의 분량이 길어서 ctrl+f 로 탐색하시는 것을 추천드립니다.
간단하게 요약하면 다음과 같은 이유입니다.
Link의 href에 등록된 경로는 next.js가 (마법같은 것을 부려서) 해당 경로의 페이지를 미리 렌더링합니다.
이렇게 html을 사전렌더링해두고 Link 변경 이벤트가 발생하면 사전에 만들어둔 html을 보여주는것으로
새로고침 없는 화면전환을 보여줄 수 있는 것입니다.
실제로 간단한 화면전환 코드를 작성하고 개발자도구의 Network 탭에서 테스트를 해보면 더 쉽게 알아볼 수 있습니다.
반응형
'Next.js' 카테고리의 다른 글
next-auth를 이용해 Google 로그인 구현하기(기초) (1) | 2023.05.31 |
---|---|
Next.js에서 에러를 핸들링 하는 방법 (0) | 2023.05.27 |
Next.js에서 환경변수 .env를 클라이언트 사이드에서도 사용하려면..? (0) | 2023.05.05 |
Next.js quick start 환경 설정 및 간단한 사용법 (0) | 2023.05.04 |
SSR, CSR, SSG, ISR 이해해보기.. (4) | 2023.04.30 |