无法使用"this.refname.current"从useEffect访问Ref。



我在这里缺少一些简单的东西,我需要访问useEffect内定义的Ref。调试器显示this是未定义的,因此我不能执行this.refOverlay.current;

// Ref
const refOverlay = useRef(null); 
// Sample useEffect that references it
useEffect(() => {
if (props.mode === 'new') {
let b = this; // Undefined
let a = this.refOverlay.current; // Error on this line
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> 
);

功能组件中没有this

const Title = () => {
const ref = useRef(null)

useEffect(() => {
if (ref.current) {
ref.current.WHATEVERYOUWANTHERE
}
}, [])
}

注意:类组件和函数组件之间的一些区别

  • function组件没有this,它是一个函数
  • 函数组件只是渲染函数
  • 有状态,你需要useState
  • 要有任何持久存储,你需要hook

您已经定义了一个基于功能的组件。哪个没有this只需删除this关键字,您就可以了。

最新更新