Next.js动态路由如何使用

官方解释

Next.js 允许你创建具有 动态路由 的页面。例如,你可以创建一个名为 pages/posts/[id].js 的文件用以展示以 id 标识的单篇博客文章。当你访问 posts/1 路径时将展示 id: 1 的博客文章。

代码

这里先用一个写好的实例代码来展示

javascript 复制代码
import React from 'react';

// 步骤1
export async function getStaticPaths() {
    // 模拟调用外部 API 获取博文列表
    const posts = [
        { id: 1 },
        { id: 2 },
        { id: 3 }
    ];

    // 根据博文列表生成所有需要预渲染的路径
    const paths = posts.map((post) => ({
        params: { id: post.id.toString() }
    }));

    // 返回需要预渲染的路径和fallback配置
    return { paths, fallback: false };
}

// 步骤2
export async function getStaticProps({ params }) {
    // 使用params中的id获取特定博文数据,这里只是模拟数据
    const postData = { id: params.id, title: 'Post Title', content: 'Post Content' };

    return {
        props: {
            postData
        }
    };
}

// 渲染页面
function Post({ postData }) {
    return (
        <div>
            <h1>{postData.title}</h1>
            <h1>{postData.id}</h1>
            <p>{postData.content}</p>
        </div>
    );
}

export default Post;

我们依次访问一下路径
http://localhost:3000/post/1

http://localhost:3000/post/2

http://localhost:3000/post/3

不难发现每次渲染的都是不同页面,这就是动态路由,能够根据你传来的数字显示不同的页面

他和传统的动态路由不同,next.js的实现方式很简单:

下面是我这个页面的文件目录

可以看见我的文件名字是id.js,这个是next.js规定的

getStaticPaths 是给我们定义一个路径,也就是当我们访问http://localhost:3000/post/1的时候,文件中没有这个名字,但是也能访问的到

getStaticProps是用来给我们的页面传参的

function Post({ postData })中的postData是接收getStaticProps传来的参数

其余的都在上面的代码中,看一下很容易就能够理解运用起来

相关推荐
从零开始的代码生活_4 分钟前
C++ stack、queue 与 priority_queue:容器适配器原理与实战
开发语言·c++·后端·学习·算法
爱勇宝9 分钟前
《道德经》第6章:别把团队的创造力用到枯竭
前端·后端
无双_Joney12 分钟前
[四期 - 4] NestJS专栏 - 征召一下大家的意见,非常想知道大家都想看看Nest的哪些方面
前端·后端·nestjs
彭亚川Allen15 分钟前
停更的这一年,All In AI、陪媳妇生娃、还考了个研
前端·后端·产品经理
techdashen26 分钟前
Go 1.25 新增 `reflect.TypeAssert`:更直接、更高效地从 `reflect.Value` 取出类型值
开发语言·后端·golang
2zcode29 分钟前
项目文档:基于MATLAB低采样率ISAR成像的快速稀疏重建算法研究
开发语言·算法·matlab
爱分享的程序猿-Clark32 分钟前
【前端开发】前端开发者如何使用 Claude Code 快速搭建 React 项目!(小白都能学会的教程)
前端·react.js
xixi092441 分钟前
JMeter5.6.3基础使用教程1
java·开发语言
এ慕ོ冬℘゜42 分钟前
原生 JS 实现自定义单选日历组件(无 UI 库、纯手写、禁用过去日期)
开发语言·javascript·ui
Ulyanov1 小时前
刚体动力学方程——牛顿-欧拉与陀螺效应的奥秘
开发语言·python·目标跟踪·雷达电子对抗·导引头