Lif*_*dik 3 routes reactjs next.js
我在尝试使用 useRouter 挂钩访问 Next.js 13 中的查询参数时遇到问题。当我运行以下代码时
'use client'
import { useRouter } from 'next/navigation';
const Post = () => {
const router = useRouter();
return (
<div>
post number : {router.query.id}
</div>
)
}
export default Post
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
未处理的运行时错误
类型错误:router.query 未定义
来源
25 | return (
26 | <div>
> 27 | post number : {router.query.id}
| ^
28 | </div>
29 |
30 | )
Run Code Online (Sandbox Code Playgroud)
我从官网Routing:Dynamic Routes获取代码,
你可以看这里
我将其记录在控制台中以查看变量路由器内部的内容,我得到这个
我在尝试使用 Next.js 中应用程序目录内的useRouter钩子访问查询参数时遇到了该问题。next/router参考Next.js文档后
当您尝试使用应用程序目录内的 next/router 中的 useRouter 挂钩时,也可能会发生这种情况,因为 next/navigation 中的 App Router 的 useRouter 与页面中的 useRouter 挂钩具有不同的行为。
要解决此问题,您可以使用包useParams中的钩子next/navigation。该钩子提供了一种获取 URL params的解决方案,无需依赖 useRouter。
以下是成功访问查询参数的修改后的代码示例:
'use client'
import { useParams } from 'next/navigation';
const Post = () => {
const { id } = useParams();
return (
<div>
Post number: {id}
</div>
);
}
export default Post;
Run Code Online (Sandbox Code Playgroud)
通过使用useParams,您可以直接解构id路由中的参数并在组件中使用它。
请记住,示例代码假设您使用的是最新版本的 Next.js (v13.4.6)。
| 归档时间: |
|
| 查看次数: |
4893 次 |
| 最近记录: |