[Next.js] 'Link', 'router.push()', 'a' tag 알고쓰자

2025. 8. 14. 17:31·🌃 Next.js

 

Next.js 로 웹 개발을 할때면 수 많은 페이지의 링크 이동을 구현 하게 되는데,

페이지 이동을 다음과 같이 크게 3가지의 방식으로 구현할 수 있다.

 

1. next/link의 Link 컴포넌트

// 3. a 태그를 이용

<a href="/home">HOME</a>

 

  • 빌드 후, a tag로 자동 변환된다.
  • a tag 의 장점을 갖는다. (SEO 최적화, prefetch 가능, 우클릭 기능 사용 가능 등)
  • 페이지 렌더링 시점에, 이동할 주소가 정해져 있는 경우 사용
  • 내부 페이지로의 이동 시, 이 방식을 사용해야 SPA 방식으로 전체 html중 필요한 부분만 리렌더링 된다.

2. router.push()

// 2. router.push() 를 이용

<button onClick={() => router.push("/home")}>HOME</button>
  • 빌드 후, 이동할 주소가 html 상에 노출되지 않기 때문에 SEO에 취약하다.
  • SEO가 필요 없거나, 되면 안되거나, 숨겨야 할때 사용
  • 페이지 렌더링 시점에, 이동할 주소가 정해져 있지 않은 경우 사용 (ex. 비동기로 클릭 시점에 이동할 주소가 정해지는 경우 등)
  • 내부 페이지로의 이동 시, 이 방식을 사용해야 SPA 방식으로 전체 html중 필요한 부분만 리렌더링 된다.

3. a 태그

// 3. a 태그를 이용
<a href="/home">HOME</a>
  • html 전체가 relaod 되기 때문에, 외부 링크 일때 사용하며, 일반적으로 내부 링크 이동시에는 의도한 경우가 아니고서는 사용을 지양하는 것이 좋다.

참고

Next.js 13 부터 다음과 같이 Link 사용 시, child에 a tag 를 사용할 필요가 없어졌다.

The next/link child can no longer be <a>. Add the legacyBehavior prop to use the legacy behavior or remove the <a> to upgrade. A codemod is available to automatically upgrade your code.

 

// Next.js 13 미만
<Link href="/home"><a>HOME</a></Link>
//Next.js 13 이상
<Link href="/home">HOME</Link>

 

 

 

 

 

 

 

 

 

 

 

---------

https://velog.io/@1nthek/Next.js-Link-router.push-a-tag-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%8B%A4%EB%A5%BC%EA%B9%8C

'🌃 Next.js' 카테고리의 다른 글

[Next.js] 에러핸들링, 서버액션( revalidatePath()  (9) 2025.08.03
[Next.js] Vercel 빌드 속도를 60% 단축하기  (0) 2025.07.08
[Next.js-basic] 포스트 데이터를 가져와 보여주기(remark)  (0) 2024.11.20
[next.js-basic] 1. install, pre-rendering, data fetching  (1) 2024.11.19
'🌃 Next.js' 카테고리의 다른 글
  • [Next.js] 에러핸들링, 서버액션( revalidatePath()
  • [Next.js] Vercel 빌드 속도를 60% 단축하기
  • [Next.js-basic] 포스트 데이터를 가져와 보여주기(remark)
  • [next.js-basic] 1. install, pre-rendering, data fetching
gprorogpfus
gprorogpfus
:- >
  • gprorogpfus
    gpfusdldks
    gprorogpfus
  • 전체
    오늘
    어제
    • 분류 전체보기 (55)
      • 🎭JavaScript (2)
      • 👚 CSS (1)
      • ⚛️ React (13)
      • 🌃 Next.js (5)
        • 🔜 next.js-study (3)
      • 🥏TypeScript (10)
      • 🏴알고리즘 (2)
      • 🌴트러블슈팅 (3)
      • ⛲ 프로젝트 (6)
        • 👖gproro-shop-app (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    GIT
    TypeScript
    Redux
    react
    JavaScript
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
gprorogpfus
[Next.js] 'Link', 'router.push()', 'a' tag 알고쓰자
상단으로

티스토리툴바