You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NextJS中如何在template.tsx获取动态路由id属性?

如何在template.tsx中获取动态路由id

情况1:template.tsx作为客户端组件

如果你的template需要用到客户端交互逻辑,先添加客户端指令,再用useParams钩子获取id:

'use client';

import { useParams } from 'next/navigation';

export default function Template({ children }: { children: React.ReactNode }) {
  const params = useParams<{ id: string }>();
  const projectId = params.id;

  // 这里可直接使用projectId,比如传递给子组件或做客户端逻辑
  return <div>{children}</div>;
}

情况2:template.tsx作为服务端组件

如果要保留服务端渲染特性,直接通过props解构获取params即可,无需额外钩子:

export default async function Template({ 
  params, 
  children 
}: { 
  params: { id: string },
  children: React.ReactNode 
}) {
  const projectId = params.id;

  // 这里可直接执行服务端逻辑,比如根据id拉取项目数据
  // const project = await fetch(`/api/projects/${projectId}`).then(res => res.json());

  return <div>{children}</div>;
}

注意事项

  • 确保你的Next.js版本在13.4及以上,template组件是该版本才进入稳定阶段的
  • 服务端组件中无需额外导入工具,params会自动通过props传入
  • 客户端组件必须声明'use client'才能使用useParams钩子

内容的提问来源于stack exchange,提问作者Alex H Hadik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 16:18:19