我在 React 中有一个项目,它应该可以放在任何网站上。这个想法是我托管一个 javascript 文件,人们放置一个具有特定 ID 的 div,然后 React 在该 div 中呈现。
到目前为止,这有效,除了点击事件。这些事件在顶层处理。这一切都很好,但是应该放置应用程序的站点之一已经stopPropagation()
实现了画布菜单。因此,事件无法正常工作。
我尝试在根元素捕获所有事件,并手动调度它们:
this.refs.wrapper.addEventListener('click', (event) => {
console.log(event);
console.log(event.type);
const evt = event || window.event;
evt.preventDefault();
evt.stopImmediatePropagation();
if (evt.stopPropagation) evt.stopPropagation();
if (evt.cancelBubble !== null) evt.cancelBubble = true;
document.dispatchEvent(event);
});
这不起作用,因为事件已经被调度:
Uncaught InvalidStateError: Failed to execute 'dispatchEvent' on 'EventTarget': The event is already being dispatched.
解决这个问题的正确方法是什么?不使用 React 的合成事件对我来说似乎不是正确的方法..