Files
open-gsio/src/layout/usePageLoaded.ts
geoffsee 33679583af init
2025-05-22 23:14:01 -04:00

27 lines
613 B
TypeScript

import { useEffect, useState } from "react";
const usePageLoaded = (callback: () => void) => {
const [isLoaded, setIsLoaded] = useState(false);
useEffect(() => {
const handlePageLoad = () => {
setIsLoaded(true);
callback();
};
if (document.readyState === "complete") {
// Page is already fully loaded
handlePageLoad();
} else {
// Wait for the page to load
window.addEventListener("load", handlePageLoad);
}
return () => window.removeEventListener("load", handlePageLoad);
}, [callback]);
return isLoaded;
};
export default usePageLoaded;