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

shadcn中NavigationMenuTrigger用asChild报错:React.Children.only仅接受单个子元素

修复 React.Children.only 错误的方案

问题原因

你遇到的React.Children.only expected to receive a single React element child错误,本质是NavigationMenuTrigger的asChild模式要求仅接收一个React元素作为直接子节点,但你的代码中,NavigationMenuTrigger内部的换行、空格被React解析成了额外的文本节点,导致它认为存在多个子元素(文本节点 + Button元素 + 文本节点)。

修复方法

只需确保NavigationMenuTrigger的直接子元素只有Button,消除所有多余的换行和空格即可,以下是两种可行写法:

写法1:紧凑排列代码

<NavigationMenuTrigger asChild><Button variant="outline"><CircleUserRound />test</Button></NavigationMenuTrigger>

写法2:用注释屏蔽换行文本节点

如果想保留代码格式的可读性,可以用空注释消除换行产生的文本节点:

<NavigationMenuTrigger asChild>{/* */}
  <Button variant="outline">
    <CircleUserRound />test
  </Button>{/* */}
</NavigationMenuTrigger>

额外排查点

如果上述方法仍未解决问题,可以检查:

  • Button组件内部是否返回了多个未被包裹的元素(比如直接返回两个标签而没有用Fragment或容器包裹)
  • CircleUserRound图标组件是否存在返回多个元素的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 09:34:57