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

React函数组件useEffect内使用this.refname.current无法访问Ref问题

问题根因

你在React函数组件中使用Hooks开发,函数组件没有类组件对应的实例this对象,因此访问this会返回undefined。你声明的refOverlay是当前作用域下的常量,直接访问即可,不需要通过this前缀引用。

修正后代码
// Ref
const refOverlay = useRef(null); 

// 引用ref的useEffect逻辑
useEffect(() => {
    if (props.mode === 'new') {
        const a = refOverlay.current; // 直接访问声明的ref变量即可
        if (a) {
            console.log('ok');
        }
    }
}, [props.mode]);

// 渲染部分保持不变
return (
{/* JSX Definition */}
        <OverlayTrigger ref={refOverlay} trigger="click" rootClose placement="bottom" overlay={popoverApprover}>
            <a href="javascript:void(0)" className="more-info">TEST</a>
        </OverlayTrigger> 
);
补充注意事项
  • 若OverlayTrigger为自定义/第三方函数组件,需要确认该组件内部使用了React.forwardRef做ref透传,否则refOverlay.current会一直返回null。
  • refOverlay本身不需要加入useEffect的依赖数组,useRef返回的对象引用在组件生命周期内是稳定不变的。

内容的提问来源于stack exchange,提问作者gene b.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:36:00