ReactにはどのWebサイトにも配置できるプロジェクトがあります。アイデアは、私はjavascriptファイルをホストし、人々は特定のIDを持つdivを配置し、そのdivのReactレンダリングを行います。ハンドルReception event delegation with stopPropagation()
これまでのところ、クリックイベントを除いてこれが機能します。これらの値はhandled at the top levelです。これはすべて役に立ちますが、アプリを配置するサイトの1つにオフキャンバスメニュー用に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の合成イベントを使用していないので、私のために行く正しい方法ではありません。
これは完全な回答ではありません。エラーはスローされませんが、Reactのイベントは機能しません – MiF