양식 제출 등의 클라이언트 단에서 이루어져야 하는 작업의 경우 CSR로 이루어지기 때문에, 페이지 이동 시 다른 접근 방식이 필요하다.
이 경우 Programmatic Navigation을 사용할 수 있다.
Programmatic Navigation을 사용해보자!
import React from "react";
import Link from "next/link";
import UserTable from "./UserTable";
interface Props {
searchParams: { sortOrder: string };
}
const UsersPage = ({ searchParams: { sortOrder } }: Props) => {
return (
<div>
<div>This is UserPage</div>
<Link href="/users/new" className="btn btn-primary">
New user
</Link>
<p>{new Date().toLocaleTimeString()}</p>
<UserTable sortOrder={sortOrder} />
</div>
);
};
export default UsersPage;
“use client”
지시문을 추가한다.useRouter
훅의 라우터 객체를 사용한다.next/navigation
를 사용한다.next/router
를 사용하면 오류가 발생하므로 주의!next/navigation
를 사용하면 클라이언트 사이드에서 페이지간 네비게이션을 처리할 수 있으며, 여러 라우팅 메소드와 훅을 제공한다.import { useRouter } from "next/navigation";
const router = userRouter();
push
메소드를 사용한다."use client";
import React from "react";
import { useRouter } from "next/navigation";
const NewUser = () => {
const router = useRouter();
return (
<button className="btn btn-primary" onClick={() => router.push("/users")}>
Create
</button>
);
};
export default NewUser;