카테고리 없음

next 쿼리스트링과 상세 페이지

cheon seung hyeon 2024. 10. 15. 16:16

next 내에서 쿼리 스트링 데이터를 사용하려면?

/newpost/?type=post

import { useRouter } from "next/router";

 

import { useRouter } from "next/router";

export default function Page() {
  const router = useRouter();
  console.log(router);

  return <h1>Search1</h1>;
}

router는 다양한 데이터를 가지고 있고 쿼리스트링또한 query 라는 형태로 저장합니다

import { useRouter } from "next/router";

export default function Page() {
  const router = useRouter();

  const { q } = router.query.q;

  return <h1>Search1</h1>;
}

구조 분해 할당으로 쿼리 스트링 사용가능

import { useRouter } from "next/router";

export default function Page() {
  const router = useRouter();

  const { q } = router.query;

  return <h1>{q}</h1>;
}

 

 

/newpost/1

/newpost/100

 

같이 동적인 상세 페이지를 만들기 위해서 폴더 아래 [id].tsx 파일을 만든다

 

import { useRouter } from "next/router";

export default function Page() {
  const router = useRouter();

  const { id } = router.query;
  return <h1>book{id}</h1>;
}

퀴리 스트링과 동일

 

여러개의 쿼리 스트링을 사용하고 싶다면

[...id].tsx 파일로 만들면 됨 (catch all segment) - 모든 경로를 다 잡겠다 

배열 형태로 저장된다

 

이때 [id].tsx 나 [...id].tsx 는 경로 뒤에 추가가 되는게 있으면 해당 페이지를 보여주지만

/book 처럼 기본 페이지로 끝나면 보여주지 않는다

이땐 [[...id]].tsx 이렇게 만들면 모든 페이지를 다 이용가능 - (optional catch all segment)

/book , /book/123 , /book/1/2/3 모두 가능 -

 

에러 페이지

404.tsx 로 만들면됌