728x90
Next.js에서 네비게이팅 하는 법을 알아보자!
네비게이팅(Navigating)
Next.js에서는 Link 컴포넌트를 통해 페이지를 이동시킬 수 있다.
import Link from "next/link" 이런식으로 Link를 import하고,
<Link href={"/경로"}>text</Link> 형식으로 작성하면 하면 링크가 생기게 된다.
import type { AppProps } from "next/app";
import Link from "next/link";
export default function App({ Component, pageProps }: AppProps) {
return (
<>
<header>
<Link href={"/"}>index</Link>
<Link href={"/search"}>search</Link>
<Link href={"/book/1"}>book/1</Link>
</header>
<Component {...pageProps} />
</>
)
}
Programmatic Navigation (프로그래매틱한 페이지 이동)
함수가 실행되거나, 이벤트가 발생했을 때 페이지 이동 하는 법
사용자가 링크를 클릭했을 때 페이지를 이동시키는 방식이 아니라,
특정 버튼이 클릭이 되었거나, 특정 조건을 만족했을 때 어떤 함수 내에서 페이지를 이동 시키는 것
import "@/styles/globals.css";
import type { AppProps } from "next/app";
import Link from "next/link";
import { useRouter } from "next/router";
export default function App({ Component, pageProps }: AppProps) {
const router = useRouter();
const onClickButton = () => {
router.push("/test");
};
return (
<>
<header>
<Link href={"/"}>index</Link>
<Link href={"/search"}>search</Link>
<Link href={"/book/1"}>book/1</Link>
<div>
<button onClick={onClickButton}>/test 페이지로 이동</button>
</div>
</header>
<Component {...pageProps} />
</>
)
}
버튼에 onClickButton 함수를 단다.
함수 내부에 페이지를 이동시킬수 있는 로직을 만든다.
useRouter를 import해서 컴포넌트 내부에서 router 객체를 받아오고 ,
함수 내부에서 router의 push 메서드를 호출하고, 인수로는 문자열로 이동하고 싶은 경로(여기서는 "/test")를 명시하면 된다.
이 방식을 통해서 컴포넌트 내부에서 특정 조건이 만족하면, 함수 내부에서도 페이지를 CSR 방식으로 이동시킬 수 있다.
참고로 router 객체에는 replace나 back 같은 메서드들도 있다!
* replace: 뒤로 가기를 방지하며 페이지 이동
* back: 페이지를 뒤로 이동
728x90
'Frameworks > Next.js' 카테고리의 다른 글
[Next.js] Next.js 프로젝트 시작하기 (App Router ver.) (6) | 2024.11.14 |
---|---|
[Next.js] 서버와 통신을 통해 검색창, 검색어, 검색 필터 기능 구현하기 (검색창 만들기) React, TypeScript 사용 (9) | 2024.11.13 |
[Next.js] 프리페칭(Pre-fetching) (2) | 2024.11.07 |
[Next.js] 라우팅 (Routing) (Page Router ver.) (2) | 2024.11.07 |
[Next.js] Next.js 프로젝트 시작하기 (Page Router ver.) (9) | 2024.11.05 |