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

React Popover无法运行:Cannot read properties of undefined (reading 'className')

问题分析与解决

你的代码存在两个核心问题:

1. Overlay 组件返回值错误

你定义的 Overlay 组件内部声明了返回Popover的函数 popover,但最终直接返回了这个函数本身,而非调用它得到的React元素,导致OverlayTrigger无法渲染正确内容。

2. OverlayTrigger 中 overlay 属性调用方式错误

如果 Overlay 是类组件的方法,() => this.Overlay() 的写法冗余且可能引发上下文问题;如果是函数组件,this 本身不存在,直接使用会触发报错。


修正后的代码示例

方案一:简化 Overlay 组件,直接返回Popover元素

// 定义Popover内容组件
const Overlay = () => (
    <Popover id="popover-basic">
        <Popover.Title as="h3">Popover right</Popover.Title>
        <Popover.Content>
            And here's some <strong>amazing</strong> content. It's very engaging. right?
        </Popover.Content>
    </Popover>
);

方案二:正确调用 overlay 属性

无论是类组件还是函数组件,直接传入组件实例即可:

<OverlayTrigger 
    trigger="click" 
    placement="right" 
    overlay={<Overlay />}
>
    <Button variant="success">see</Button>
</OverlayTrigger>

若需动态生成内容,也可以让 overlay 接收返回元素的函数:

<OverlayTrigger 
    trigger="click" 
    placement="right" 
    overlay={() => <Overlay />}
>
    <Button variant="success">see</Button>
</OverlayTrigger>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:03:09