我正在尝试使用反应挂钩来确定用户是否在元素外部单击。我正在使用 useRef
来获取对该元素的引用。
任何人都可以看到如何解决这个问题。我收到以下错误并 从此处获得以下答案。
“RefObject”类型上不存在属性“包含”
上面的错误似乎是打字稿问题。
在这两种情况下,它都不起作用。
import React, { useState, useEffect, useRef } from 'react';
import ReactDOM from 'react-dom';
const Menu = () => {
const wrapperRef = useRef<HTMLDivElement>(null);
const [isVisible, setIsVisible] = useState(true);
// below is the same as componentDidMount and componentDidUnmount
useEffect(() => {
document.addEventListener('click', handleClickOutside, true);
return () => {
document.removeEventListener('click', handleClickOutside, true);
};
}, []);
const handleClickOutside = event => {
const domNode = ReactDOM.findDOMNode(wrapperRef);
// error is coming from below
if (!domNode || !domNode.contains(event.target)) {
setIsVisible(false);
}
}
return(
<div ref={wrapperRef}>
<p>Menu</p>
</div>
)
}
原文由 peter flanagan 发布,翻译遵循 CC BY-SA 4.0 许可协议
useRef API 应该像这样使用: