티스토리 뷰
detail/[동적 라우팅]/page.tsx 로 만들어주면 detail/1234 로 들어오는 url 값이 날라옵니다.
보통 상세페이지 조회시 id 값을 받아 페이지를 로드해줍니다.
import { redirect } from "next/navigation"; 를 사용해서 id 값으로 검색했는데 없어서 에러가 발생한 경우, redirect 를 치도록 예외처리합니다.
import { connectDB } from "@/util/db"
import { ObjectId } from "mongodb";
import { redirect } from "next/navigation";
export default async function DetailPage(props: any) {
let title = ''
let content = ''
try {
const { id } = props.params
const client = await connectDB;
const db = client.db('<database name>')
const data = await db.collection('post').findOne({_id: new ObjectId(id)})
title = data.title
content = data.content
} catch (error) {
console.log('없는 detail 페이지입니다.', error)
redirect('/list')
}
return (
<div>
<h4>{title}</h4>
<p>{content}</p>
</div>
)
}
useRouter
useRouter 를 사용해서 라우팅 컴포넌트를 직접 생성하여 라우팅을 조작할 수 있습니다.
'use client'
import { useRouter } from "next/navigation"
export default function DetailLink(props: any) {
const { id } = props
const router = useRouter()
return (
<button type="button" onClick={() => router.push(`/detail/${id}`)}>
상세보기
</button>
)
}
'개발.. > Nextjs' 카테고리의 다른 글
Next.js 14 Release! (0) | 2023.10.31 |
---|---|
Nextjs 에서 API Routes 사용하기 (0) | 2023.10.24 |
Nextjs에 몽고 DB 연동하기 (0) | 2023.10.09 |
Nextjs 13에서 페이지 라우팅 방법 (0) | 2023.10.07 |
Nextjs 13 시작하기! (0) | 2023.10.07 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- dockerfile
- Zustand
- 스벨트
- 깃허브
- openAI
- nodejs
- NextJS
- cors
- webpack
- Vite
- AWS
- Git
- svelte
- 티스토리챌린지
- 오블완
- ChatGPT
- 네이버 서치 어드바이저
- vue router
- Github Actions
- nextjs13
- 서버 to 서버
- nextjs14
- vue composition api
- seo
- 타입스크립트
- vscode
- nextjs15
- React
- NUXT
- nuxt2
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함