#reactjs #react-router #next.js #router
#reactjs #реагировать-маршрутизатор #next.js #маршрутизатор
Вопрос:
есть ли способ условно отображать компоненты на основе URL в next.js ?
Редактировать:
как будто сейчас я делаю это:
const router = useRouter();
return (
<>
<SomeComponent />
{router.pathname === "/somePath" amp;amp; <RenderThis />}
</>
)
Мне интересно, есть ли лучший / более чистый способ для этого условного рендеринга? Нравится…
<>
<SomeComponent />
<Route path="/additionalUrl" component={RenderThis} />
</>
//or
<>
<SomeComponent />
<Route path="/additionalUrl">
<RenderThis />
</Route>
</>
Комментарии:
1. Не могли бы вы уточнить свой вопрос? Вы можете использовать объект маршрутизатора, возвращаемый перехватчиком useRouter, для получения переменных запроса. nextjs.org/docs/api-reference/next/router
2. Я отредактировал вопрос. теперь это намного конкретнее.
3. Вы нашли какое-нибудь решение для этого? Условный рендеринг определенного компонента на другой странице на основе URL-адреса?
Ответ №1:
Стиль вашего второго примера напоминает React Router, поэтому я вижу, откуда вы пришли.
Однако в Next.js , реализована маршрутизация на основе файловой системы, и маршрутизация обрабатывается для вас на основе имени файла в /pages
каталоге.
Если вы обрабатываете много разных параметров запроса в своих URL-адресах, Next.js обрабатывает и это, используя динамические маршруты
Из приведенных выше связанных документов:
Рассмотрим следующую страницу pages/post/[pid].js
:
import { useRouter } from 'next/router'
const Post = () => {
const router = useRouter()
const { pid } = router.query
return <p>Post: {pid}</p>
}
export default Post
Любой маршрут /post/1
/post/abc
, например, , и т.д. будет соответствовать pages/post/[pid].js
. Соответствующий параметр пути будет отправлен на страницу в качестве параметра запроса и будет объединен с другими параметрами запроса.
Комментарии:
1. динамическая маршрутизация
/[pid].js
отображает или не отображает всю страницу целиком на основе URL-адреса. Я уже использую это для многих своих страниц. Я просто не знаю, как перенаправить определенный компонент на странице (всплывающее окно и т. Д.) На основе URL.