Navigation Mode

페이지 이동 방식 선택

Next.js 내부 이동, 프로그램 이동, redirect, 외부 링크는 모두 다른 상황에 맞는다. 이동을 누가 시작하고 언제 확정되는지 구분해야 한다.

01

사용자 링크는 Link로 둔다

내부 페이지 사이의 명시적 이동은 Link가 접근성과 prefetch 측면에서 기본 선택이다.

02

이벤트 뒤 이동은 router를 쓴다

저장 완료, 검색 조건 변경처럼 클라이언트 이벤트 결과에 따라 이동할 때 router API가 맞다.

03

권한과 canonical은 서버에서 결정한다

로그인 필요, 오래된 URL 정리처럼 서버가 판단해야 하는 이동은 redirect로 처리한다.

Link
선언형 이동 href가 보이고 브라우저/접근성 흐름과 잘 맞는다.
버튼처럼 보이더라도 목적지가 있으면 링크다.
router.push
명령형 이동 이벤트 처리 후 계산된 경로로 이동한다.
client component 안에서 사용한다.
redirect
서버 단절 렌더링을 중단하고 다른 위치로 보낸다.
권한 검사와 잘 맞는다.
replace
history 교체 뒤로 가기 스택에 남기지 않아야 할 이동에 쓴다.
로그인 후 리다이렉트 등에서 고려한다.

의미 · 권한 · history 점검

의미 목적지가 있는 UI를 button으로 만들어 링크 의미를 잃지 않는가.
권한 보호 route 접근 차단이 클라이언트에서만 이루어지지 않는가.
history 뒤로 가기 동작이 사용자 기대와 맞는가.

이동 선택

// Link: visible navigation
// router.push: after client event
// redirect: server-side decision