服务端组件和客户端组件看起来是正确的。问题可能出在 SiteHeader 或 ProductDetailDialog 组件中。让我检查这些组件:
让我检查调试日志以获取更多信息:
我看到问题了。错误提示是关于在客户端组件中使用未缓存的 Promise。问题可能出在 home-page.tsx 组件中。让我检查它:
让我检查 CategoryCard 组件,可能它是问题的根源:
代码看起来没有明显问题。问题可能在于 Next.js 的服务端到客户端数据传递。让我检查下 navigation-menu 组件或其他依赖:
问题可能是因为分类页面的 page.tsx 直接在服务端组件中导入了 getCategoryById 函数。虽然这个函数本身不是异步的,但可能是 Next.js 在处理动态路由时的问题。让我重新审视分类页面并尝试一种更简单的方法:
这个方法可能会有同样的问题。让我改用更直接的方式 - 让客户端组件本身负责获取分类数据:
现在删除不再需要的客户端组件文件:
我将分类页面简化为一个纯客户端组件,使用 useParams() 钩子直接在客户端获取路由参数,并用 useMemo 缓存分类数据的计算。这样避免了在服务端和客户端之间传递 Promise 的问题,同时保留了所有功能:子分类筛选、产品展示和详情弹窗。
现在我了解了整个结构。我将简化为只保留腰部塑形分类,移除其他分类并重新设计为更聚焦的单页面体验。
现在删除不再需要的分类页面和组件:
我已将网页简化为只保留腰部塑形这一个产品分类。现在页面结构更加清晰:首页直接展示三款产品(日常款、注氧款、加强款),每款产品都有详细的特点、适用人群和可选规格(标准款/AX7超短款/UX7超长款)说明。导航栏也简化为直接跳转到对应款式区域,并保留了智能选款入口。