スクロールイベントを中止したくて、Event.preventDefault() を実行した際に発生したエラーについてです。
エラーメッセージで検索した結果、下記がヒットしました。
ReactでpreventDefaultできない問題に対処する – Qiita
https://qiita.com/teamhimeH/items/d5c3e3dfcc6cb63456c6
サンプルコードは下記のとおりです。
const Example = () => {
const onWheel = (e) => {
e.preventDefault();
};
const divRef = useRef(null);
useEffect(() => {
divRef.current?.addEventListener("wheel", onWheel, { passive: false });
return (() => {
divRef.current?.removeEventListener("wheel", onWheel, { passive: false });
});
});
return(
<div ref={divRef}>
......
</div>
);
};
ポイントは 7~12行目の useEffect() です。
こちらで addEventListener() を実行し、マウスホイールのイベントを検知します。
で、この時に第三引数として { passive: false } を追加したところ、第二引数で指定した関数内で、preventDefault() を実行することができました。
以上、JavaScript で「Unable to preventDefault inside passive event listener invocation」エラーが発生した時の対処方法についてでした。
ご参考になれば幸いです。