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

Next.js分类页面如何实现分页参数的获取?

问题

我在博客首页通过searchParams实现了分页功能(URL格式如url/?page=2),代码运行正常。现在需要在分类页面实现同样的分页,该页面已通过路由params获取分类名称,但尝试在params中添加分页参数的获取逻辑时,发现params仅返回{ category: '名称' },无法获取分页参数,请问该如何解决?


相关代码片段

首页实现代码

export default async function HomePage({
    searchParams,
}: {
    searchParams: {[key: string]: string | string[] | undefined};
}) {
    const DataPosts = await getPostsNumber();
    const PostsNumber = DataPosts.postCount;

    const page = getNumericParam(searchParams.pagina, 1);
    const limit = getNumericParam(searchParams.numar, 10);

分类页原有代码(获取分类名称)

export async function generateMetadata({params}: {params: {category: string}}) {
    const slug = params.category;

我的尝试代码

export default async function Page({
    params,
}: {
    params: {category: string; [key: string]: string | string[] | undefined};
}) {
    const slug = params.category;

    const DataPosts = await getPostsNumber(slug);
    const PostsNumber = DataPosts.categories[0].count;

    const page = getNumericParam(params.pagina, 1);
    const limit = getNumericParam(params.numar, 10);

解决方案

核心问题是你混淆了路由params和URL查询参数searchParams的作用:

  • 路由params只负责获取URL路径中的动态片段(比如分类页/category/xxx里的xxx)
  • 分页参数pagina、numar属于URL查询字符串(即?后面的部分),这类参数必须通过searchParams获取,和首页逻辑一致。

修改分类页代码,同时接收params和searchParams即可:

export default async function Page({
    params,
    searchParams,
}: {
    params: {category: string};
    searchParams: {[key: string]: string | string[] | undefined};
}) {
    const slug = params.category;

    const DataPosts = await getPostsNumber(slug);
    const PostsNumber = DataPosts.categories[0].count;

    // 和首页一致,用searchParams获取分页参数
    const page = getNumericParam(searchParams.pagina, 1);
    const limit = getNumericParam(searchParams.numar, 10);

如果generateMetadata函数需要用到分页参数,同样可以添加searchParams参数:

export async function generateMetadata({params, searchParams}: {
    params: {category: string};
    searchParams: {[key: string]: string | string[] | undefined};
}) {
    const slug = params.category;
    const page = getNumericParam(searchParams.pagina, 1);
    // 后续逻辑...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 04:53:20