@hamster141095

Какой указать тип для event path на React?

В общем, есть обычный handleClick на показ и скрытие меню, если клик не попадает на это меню. Не могу описать тип для event , который включает в себя path, MouseEvent не проходит ....
const [isVisiblePopup, setIsVisiblePopup] = useState(false);
  const mobileButtonsRef = useRef(null);
  const isTrainer = userRole === 'trainer'
  const handleOutsideClick = (event: MouseEvent) => {
    const path = event.path || (event.composedPath && event.composedPath());
    if (path && !path.includes(mobileButtonsRef.current)) {
         setIsVisiblePopup(false);
    }
  };

  useEffect(() => {
    document.body.addEventListener('click', handleOutsideClick);
    return () => {
        document.body.removeEventListener('click', handleOutsideClick);
    };
  }, []);


Property 'path' does not exist on type 'MouseEvent'
  • Вопрос задан
  • 3276 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Sun_Day
Вероятно его туда не добавили по какой-то причине. Есть подозрение, что именно для того, чтобы вы его не использовали.
В мозиле отыскать его не удалось, но вот в хроме оно есть. Конечно можно написать обходной тип, но наверное не стоит использовать это свойство, если важна какая никакая кроссбраузерность.
А вот с функцией composedPath все впорядке.
https://developer.mozilla.org/en-US/docs/Web/API/E...

Но если прям необходимо, то как-то так:

type M = MouseEvent & {
    path: Node[];
}
  const handleOutsideClick = (event: M ) =>


6059fcedca4bc829495530.jpeg
6059fcf7e1b25851798383.jpeg
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы