Я пытаюсь использовать реагирующие хуки, чтобы определить, нажал ли пользователь за элемент.Я использую 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>
)
}