Как отобразить первую страницу маршрута без номера страницы в следующем JS

#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, что нежелательно.