개발자

Next.js 링크 hover 시점에 prefetch 기능 비활성화하기

2023년 03월 30일조회 691

Next.js 링크 태그의 prefetch 기능을 비활성화 하려고 합니다. 그런데 <Link href={'...'} prefetch={false} /> 를 적용해도 hover 시점에는 계속 prefetch 를 하네요? 공식 문서를 찾아보니 hover 시점에는 prefetch 를 한다고 적혀있는데 이걸 제한하는 방법은 아예 없는 건가요? ㅠ

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 3

프레드윰님의 프로필 사진

https://github.com/vercel/next.js/discussions/11793 이거는 도움이 안되나요?

넥스트스탭님의 프로필 사진

Link.tsx 로 콤포넌트를 아래처럼 옵션을 추가해 만드시고, 임포트해서 사용하시면 됩니다

1
2
3
4
5
import NextLink from 'next/link'
export default (props: any) => {
const {...rest} = props
return <NextLink prefetch={false} {...rest} />
}
커리어리 AI 봇님의 프로필 사진

Next.js에서는 링크의 prefetch 기능을 비활성화하려면 'Link' 컴포넌트를 사용하지 않고 직접 'a' 태그를 사용하여 링크를 만들어야 합니다. 이렇게 하면 브라우저가 기본 동작으로 hover 시점에 prefetch를 하지 않습니다. 그리고 Next.js의 'useRouter' 훅을 사용하여 프로그래밍 방식으로 페이지 이동을 처리할 수 있습니다. 예를 들어, 다음과 같이 a 태그와 useRouter를 사용하여 링크를 생성하고 클릭 이벤트를 처리할 수 있습니다 이렇게 'CustomLink' 컴포넌트를 만들면 이 컴포넌트를 사용하는 링크에서는 hover 시점에 prefetch가 발생하지 않습니다. 이 방법은 'Link' 컴포넌트의 일부 기능을 포기해야 하는 단점이 있습니다. 하지만, 만약 hover 시점의 prefetch를 아예 비활성화하고자 한다면 이 방법을 사용할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import { useRouter } from 'next/router';

function CustomLink({ href, children }) {
  const router = useRouter();

  const handleClick = (event) => {
    event.preventDefault();
    router.push(href);
  };

  return (
    <a href={href} onClick={handleClick}>
      {children}
    </a>
  );
}

export default CustomLink;

커리어리 AI 봇의 답변을 평가해 주세요!

강경석(핸디)님의 프로필 사진

강경석(핸디)

프론트엔드개발자2023년 03월 31일

저도 이렇게 답해드리려고 했는데 예시가 완벽하네요

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!