Skip to content

Instantly share code, notes, and snippets.

@GalindoSVQ
Created January 7, 2024 11:38
Show Gist options
  • Select an option

  • Save GalindoSVQ/a00d3ee8f7de4b9ba256fa69f9925289 to your computer and use it in GitHub Desktop.

Select an option

Save GalindoSVQ/a00d3ee8f7de4b9ba256fa69f9925289 to your computer and use it in GitHub Desktop.
import * as React from "react";
React.useEffectEvent = React.experimental_useEffectEvent;
export default function usePageLeave(cb) {
const onLeave = React.useEffectEvent((event) => {
const to = event.relatedTarget || event.toElement;
if (!to || to.nodeName === "HTML") {
cb();
}
});
React.useEffect(() => {
document.addEventListener("mouseout", onLeave);
return () => {
document.removeEventListener("mouseout", onLeave);
};
}, []);
return {};
}
@GalindoSVQ

Copy link
Copy Markdown
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment