我有一个自定义的
Accordion
组件,它接受 AccordionItem
组件。两者都是客户端组件!
在 AccordionItem.tsx 文件中,我不仅导出组件,还导出标题和正文部分的命名空间......如下所示:
"use client"
/// some code
export default AccordionItem ...
export namespace AccordionItem {
export function Header({...
// code
export function Body({...
}
当我使用此组件时,NextJS 会抛出以下错误未处理的运行时错误
错误:在 React 客户端清单中找不到模块“//components/accordion/AccordionItem.tsx#AccordionItem#Header”。这可能是 React Server Components 捆绑器中的一个错误。
该组件适用于任何常规 React 项目,但不适用于 Next JS 14.2.12
搜索了一段时间后,遇到了一个 github 问题,有人建议在使用 Accordion/AccordionItem 的组件上简单地使用
"use client"
,即使它“修复”了问题......它使我的组件在客户端呈现,这是我不想要的。
有人知道更好的解决方法吗?还是我们只能等待下一个团队?
要解决此问题而不在客户端渲染整个组件,请尝试将交互部分(如标题和正文)分离为不同的客户端组件。仅在这些组件中使用“使用客户端”。这样,组件的其余部分可以保留在服务器端。