繁体   English   中英

获取 URL 参数 (Next.js 13)

[英]Get URL Params (Next.js 13)

我正在使用/app目录构建一个 Next.js 13 项目。 我有一个问题 - 在根布局中,我有一个永久导航栏组件,该组件是从/components/Navbar.jsx导入的。 基本上在Navbar.jsx内部,我希望能够访问 url 中的 slug 参数,例如: localhost:3000/:slug我想要其中的 slug id。 我已经为那个 slug 定义了一个 Next.js 13 page.jsx。 但是如何在导航栏组件中获取 slug id。 我也不想使用window.location.pathname因为当页面路由到不同的 slug 时它不会改变并且只在我刷新时才会改变。

我试过旧的 Next.js 12 方法:

 //components/navbar.jsx; import { useRouter } from "next/navigation"; export default function Navbar () { const router = useRouter(); const { slug } = router.query; useEffect(() => { console.log(slug); }, []); return <p>Slug: {slug}</p> }

但是它不起作用。

必须使用usePathname

import { usePathname } from 'next/navigation';

要在Next.js 13中的服务器组件中获取 URL 参数,可以使用页面 function 的searchParams参数。

URL

localhost:3000/?slug

页面.js

export default function Page({searchParams}) {
   return <Navbar slug={searchParams}></Navbar>
}

导航栏.js

export default function Navbar(props) {
   return <p>Slug: {props.slug}</p>
}

更多信息: https://beta.nextjs.org/docs/api-reference/file-conventions/page

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM