【发布时间】:2023-02-17 01:43:07
【问题描述】:
我试图根据它是“主页”还是在其 URL 中包含“文档”(例如 docs/1、docs/2、docs/3)的页面来显示不同的导航。 我只是在“文档”案例上一片空白——感觉我在这里遗漏了什么?
到目前为止,这是我的代码:
const router = useRouter()
const path = router?.asPath
if (path === '/docs/') {
return (
<>
<Head>
<title>{pageTitle}</title>
{description && <meta name="description" content={description} />}
</Head>
<Layout
navigation={navigation1}
title={title}
tableOfContents={tableOfContents}
>
<Component {...pageProps} />
</Layout>
</>
)
}
if (path === '/') {
return (
<>
<Head>
<title>{pageTitle}</title>
{description && <meta name="description" content={description} />}
</Head>
<Layout
navigation={navigation}
title={title}
tableOfContents={tableOfContents}
>
<Component {...pageProps} />
</Layout>
</>
)
}
【问题讨论】:
-
这很可能是因为这些路由的路径不是
/docs/。你有没有试过这样的东西:if (path.includes('/docs') { ... }? -
谢谢,“包含”成功了!
-
跟进这个,看看是否有人有任何指导。下面这个工作得很好: let isDocs = router.pathname.includes('/docs') 但是后来我决定添加一个语言文件夹,这样新的 url 就变成了 en/docs 并且: let isDocs = router.pathname.includes('/ en/docs') 但这似乎打破了整个事情。任何可能导致它停止工作的建议或指导?
-
router.pathname.includes('/docs')即使在路径中使用语言环境也仍然有效。
标签: next.js