我正在尝试使用react-hooks来确定用户是否在元素外单击。我正在使用useRef
来获取对元素的引用。
任何人都可以看到如何解决这个问题。我从这里收到以下错误和以下答案。
“RefObject”类型上不存在属性“包含”
上面的这个错误似乎是一个typescript问题。
这里有一个代码沙箱,有不同的错误。
在这两种情况下,它都不起作用。
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>
)
}