我在这里缺少一些简单的东西,我需要访问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
关键字,您就可以了。