#javascript #reactjs #next.js
#javascript #reactjs #next.js
Вопрос:
Я пытался создать страницу блога, которая содержит нумерацию страниц с номерами.
Моя папка pages выглядит следующим образом :
src
-pages
--blog
---[id].tsx
Я могу отображать все статические страницы с помощью функции getStaticPaths, предоставляемой Next.
Проблема в том, что я хотел бы показать первую страницу как /blog вместо /blog/1 .
Как я могу нажать на route /blog, когда есть содержимое /blog / 1?
Ответ №1:
Может быть (1) маршрутизация на стороне клиента и (2) маршрутизация на стороне сервера
создать новую страницу blog/index.tsx
src
-pages
--blog
---[id].tsx
---index.tsx
и перенаправить на /blog/1 в index.tsx (маршрутизация на стороне клиента)
import { useEffect } from 'react'
import { useRouter } from 'next/router'
export default function Blog() {
useEffect(() => {
router.push('/blog/1')
}, [])
return <p>Redirecting...</p>
}
маршрут на стороне сервера
import { useEffect } from 'react'
import { useRouter } from 'next/router'
export default function Blog() {
useEffect(() => {
router.push('/blog/1')
}, [])
return <p>Redirecting...</p>
}
export const getServerSideProps = ({ req, res }) => {
res.writeHead(302, { Location: "/blog/1" });
res.end();
return {
props: {}
}
}
Комментарии:
1. Пробовал этот подход, но он ему не понравился. 1 — Для перенаправления требуется время 2 — URL по-прежнему показывает /blog/1, что нежелательно.