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

Next.js生产环境useSearchParams需包裹Suspense问题求助

解决useSearchParams()需包裹在Suspense边界的问题

错误原因

你的页面组件在顶级作用域直接调用了useSearchParams(),本地开发环境对Suspense的检查相对宽松未触发报错,但Netlify生产环境下,Next.js的生产优化会严格执行React Suspense机制要求:使用useSearchParams这类依赖客户端路由状态的钩子时,必须将其所在的组件逻辑包裹在Suspense边界内。你当前的Suspense仅包裹了渲染结果,未覆盖钩子调用的核心逻辑,因此触发报错。

修复方案

将依赖useSearchParams的过滤与渲染逻辑抽离为独立的客户端子组件,在父页面中用Suspense包裹该子组件,确保钩子调用处于Suspense边界内。

步骤1:创建子组件ImoveisList.js

"use client";

import { useSearchParams } from "next/navigation";
import { imoveis } from "../data/imoveis";
import Link from "next/link";

export default function ImoveisList() {
  const searchParams = useSearchParams();
  const tipo = searchParams.get("tipo");

  const filteredImoveis = tipo
    ? imoveis.filter((imovel) => imovel.tipo === tipo)
    : [];

  return (
    <>
      {filteredImoveis.length > 0 ? (
        <ul>
          {filteredImoveis.map((imovel, index) => (
            <li
              key={index}
              className="bg-neutral-200 m-2 text-black p-2 w-96"
            >
              <div>
                <Link href={imovel.path}>
                  <p>{imovel.title}</p>
                  <p>{imovel.price}</p>
                </Link>
              </div>
            </li>
          ))}
        </ul>
      ) : (
        <p>Nenhum resultado encontrado.</p>
      )}
    </>
  );
}

步骤2:修改父页面ImoveisPage.js

import React, { Suspense } from "react";
import ImoveisList from "./ImoveisList";

const ImoveisPage = () => {
  return (
    <div className="bg-gray-400 text-black min-h-screen p-8">
      <h1 className="text-2xl">Resultados da Pesquisa</h1>
      <Suspense fallback={<div>Carregando...</div>}>
        <ImoveisList />
      </Suspense>
    </div>
  );
};

export default ImoveisPage;

补充方案

若不想抽离子组件,也可通过动态导入实现(本质仍是将钩子逻辑包裹在Suspense内):

// ImoveisPage.js中替换导入语句
import dynamic from "next/dynamic";

const ImoveisList = dynamic(() => import("./ImoveisList"), {
  ssr: false,
  loading: () => <div>Carregando...</div>,
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 20:35:17