기존 페이지 라우터 방식과 비슷하지만 서버 컴포넌트라는 개념이 추가되어 방식이 변경된다.
앱 라우터 js 번들에는 클라이언 컴포넌트만 포함되어 서버 컴포넌트는 포함이 되지않아 서버 컴포넌트로 구성된 RSC Payload도 함께 전달해주어야한다.
import Link from "next/link";
<Link href={'/'}>index</Link>
link를 import 해주고 link 태그를 사용하여 연결해준다.
함수 등을 사용하여 페이지를 이동시키는 법
import { useRouter } from "next/navigation";
export default function Searchbar() {
const router = useRouter();
const onSubmit = () =>{
router.push(`/search?q=${search}`);
}
return (
<div>
<input value={search} onChange={onChangeSearch}/>
<button onClick={onSubmit}>검색</button>
</div>
)
}
링크들이 존재해 이동할 가능성이 있는 모든 페이지의 데이터를 미리 불러오는 동작
앱 라우터의 모든 페이지는 static 하거나 dynamic 페이지로 나뉜다.
staic 페이지 : 빌드 타임이 미리 생성된 정적인 페이지 -rsc와 js 번들 둘다 불러옴
dynamic 페이지 : 브라우저가 요청할 때 마다 생성되는 동적인 페이지 - rsc만 프리 패칭 후 js 번들은 페이지 이동이 발생했을 때만 불러온다.