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

Next.js 13中如何从本地JSON创建动态路由并传递Props

解决本地项目数据传递到动态页面的方案
  • 直接导入本地数据文件
    在[uniquepage]/page.tsx顶部导入你的projects.json,因为是本地静态资源,无需异步请求:

    import projects from '../../projects.json'; // 路径根据你的文件实际位置调整
    
  • 通过路由参数匹配对应项目
    在App Router的动态页面中,page.tsx会接收params参数,从中提取项目ID,再从数组中找到匹配的项目:

    // 先定义项目类型,和你的json数据结构对应
    type Project = {
      id: string;
      title: string;
      info: string;
      img: string;
    };
    
    export default function UniquePage({ params }: { params: { uniquepage: string } }) {
      // 根据路由参数匹配项目
      const targetProject = projects.find((project: Project) => project.id === params.uniquepage);
    
      // 处理项目不存在的情况
      if (!targetProject) {
        return <div>该项目不存在</div>;
      }
    
      // 渲染项目详情
      return (
        <div>
          <h1>{targetProject.title}</h1>
          <p>项目ID: {targetProject.id}</p>
          <p>{targetProject.info}</p>
          <img src={targetProject.img} alt={targetProject.title} />
        </div>
      );
    }
    
  • 确认列表页链接格式正确
    确保Projects.tsx中的动态链接路径和路由规则一致,指向对应项目的ID:

    import Link from 'next/link';
    import projects from './projects.json';
    
    export default function Projects() {
      return (
        <div>
          {projects.map(project => (
            <Link key={project.id} href={`/uniquepage/${project.id}`}>
              <div>
                <h3>{project.title}</h3>
              </div>
            </Link>
          ))}
        </div>
      );
    }
    

内容的提问来源于stack exchange,提问作者LatePayment

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 22:37:02