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

Next.js 12.4传递查询字符串为组件Props时的类型错误

解决方案

1. 修复searchParams的类型与运行时安全问题

在Next.js App Router中,searchParams本身是可选值(可能为undefined),且查询参数也可能不存在,必须调整类型并添加空值保护:

interface Props {
  searchParams?: { sortOrder?: string };
}

const UsersPage = ({ searchParams }: Props) => {
  // 给sortOrder设置默认值,避免undefined引发报错
  const sortOrder = searchParams?.sortOrder ?? 'asc';
  return (
    <UsersTable sortOrder={sortOrder} />
  );
};

2. 给UsersTable组件定义正确的Props类型

类型错误的核心原因是UsersTable未声明接受sortOrder这个props,需要为它补充类型定义:

// UsersTable组件文件
interface UsersTableProps {
  sortOrder: string;
}

const UsersTable = ({ sortOrder }: UsersTableProps) => {
  // 这里编写根据sortOrder排序列表的逻辑
  return <div>当前排序方式:{sortOrder}</div>;
};

export default UsersTable;

3. 额外注意事项

  • 若使用Pages Router,需通过useRouter()获取查询参数,同样要处理空值:
    import { useRouter } from 'next/router';
    
    const UsersPage = () => {
      const router = useRouter();
      const sortOrder = (router.query.sortOrder as string) ?? 'asc';
      return <UsersTable sortOrder={sortOrder} />;
    };
    
  • 始终对查询参数做空值处理,避免用户直接访问不带参数的页面时触发运行时错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 05:05:58