我在获取动态路由中的参数时遇到问题。我在阅读时不断收到错误:
类型错误:无法解构“router.query”的属性“themenID”,因为它未定义。
另外,我不能使用next/router但必须集成路由器next/navigation。但这个没有查询属性。我使用 Next.js 版本 13
next/router
next/navigation
该路径的名称如下:http://localhost:3000/MainThema/2。
http://localhost:3000/MainThema/2
应用程序/MainThema/[themenID]/page.js:
"use client"; import { useRouter } from "next/navigation"; import React from "react"; export default function MainThema() { const router = useRouter(); console.log(router); const { themenID } = router.query; return <div>MainThema </div>; }
在 Next.js 13 中,next/navigation 提供的路由器对象没有 query 属性来访问动态路由中的参数。取而代之的是,您可以使用 useParams 钩子来获取动态路由中的参数。
query
useParams
在您的代码中,只需将 useRouter 替换为 useParams 并删除对 query 的引用,然后直接使用 themenID 变量来访问动态路由中的参数。
useRouter
themenID
修改后的代码如下所示:
import { useParams } from 'next/navigation'; import React from 'react'; export default function MainThema() { const { themenID } = useParams(); console.log(themenID); return <div>MainThema </div>; }
使用 useParams 钩子后,您应该能够成功获取动态路由中的参数。请注意,useParams 返回一个对象,您可以直接从中解构出需要的参数值。在您的例子中,themenID 变量将包含从动态路由中获取的参数值。