У меня была такая же проблема в течение нескольких недель, благодаря ответам на ваш вопрос и этому посту, не связанному с этой темой: Почему свойство onclick, установленное с помощью setAttribute, не работает в IE? , я былвозможность заставить его работать с onClick
и mouseover
событиями.
Как сказано в одном из приведенных выше ответов, X3Dom поставляется со своим собственным набором функций, связанных с событием onClick.И, как упоминалось в документации X3DOM, вы можете прикрепить свое событие только после загрузки документа.Также идея @mistapink была правильной, за исключением того, что метод setAttribute
не работает по некоторым причинам.Итак, я сделал это:
const Scene = () => {
const [toggle, setToggle] = useState(false);
const handleMouseOver = () => {/* do some mouse over stuff here */};
const handleClick = () => setToggle(prevToggle => !prevToggle};
useEffect(() => {
const 3dObject = document.getElementById('my-3d-object');
/* I guess you can also try to use a reference, don't know if it'll work */
document.onload = () => {
3dObject.addEventListener("mouseover", handleMouseOver);
/* magic happens here */
3dObject.onclick = () => handleClick(
/* you can pass some extra arguments here */
);
}
return () => sphere.removeEvenetListener("mouseover", handleMouseOver);
});
return (...)
};