Javascript 使用onload时React中的欢迎加载程序问题
我正在用React实现欢迎加载程序。首先加载页面时,它工作正常。但是当我再次刷新页面时,加载程序不会在加载时消失。 这是代码->Javascript 使用onload时React中的欢迎加载程序问题,javascript,reactjs,react-hooks,use-state,Javascript,Reactjs,React Hooks,Use State,我正在用React实现欢迎加载程序。首先加载页面时,它工作正常。但是当我再次刷新页面时,加载程序不会在加载时消失。 这是代码-> function App(){ const [isLoader, setIsLoader] = useState(false); useEffect(() => { setIsLoader(true); window.addEventListener("load&qu
function App(){
const [isLoader, setIsLoader] = useState(false);
useEffect(() => {
setIsLoader(true);
window.addEventListener("load", setLoaderHandle);
return () => {
window.removeEventListener("load", setLoaderHandle);
}
}, []);
const setLoaderHandle = () => {
const time = setTimeout(() => setIsLoader(false), 1300);
}
return (
<>
{isLoader && <Loader />}
</>
)
}
函数应用程序(){
const[isLoader,setIsLoader]=useState(false);
useffect(()=>{
setIsLoader(真);
window.addEventListener(“加载”,setLoaderHandle);
return()=>{
removeEventListener(“加载”,setLoaderHandle);
}
}, []);
常量setLoaderHandle=()=>{
const time=setTimeout(()=>setIsLoader(false),1300);
}
返回(
{isLoader&&}
)
}
一旦向加载事件添加了事件侦听器,则会调用加载事件,因此打开新选项卡时会调用加载事件,但对于刷新加载事件,则不会调用加载事件,因此也不会调用setLoaderHandle
您可以在useEffect中调用setLoaderHandle
,以确保在每个组件装载时都调用它
useEffect(() => {
setIsLoader(true);
window.addEventListener("load", setLoaderHandle);
setLoaderHandle();
return () => {
window.removeEventListener("load", setLoaderHandle);
};
}, []);
所以如果我直接把它放在钩子里。。。它将直接调用setLoaderhandle。但我只想在页面完全加载后调用它。您应该将初始值设置为true,在页面加载时将其设置为false,但刷新时加载程序不会出现,因为刷新时您仍然在同一页面上,所以onload事件不会得到firedit正在工作,,,,,我唯一不明白的是。。。。。事件侦听器和setLoaderHandle保持在一起。。。。。因此,setEventHandler将在页面加载之前被调用,并将使加载程序为false。当您打开一个新选项卡(后续重新加载时也是如此)时,将不会调用onload事件,您可以立即删除eventListner部分,因为它是不可逆的,现在有没有其他方法可以让相同的欢迎加载程序感觉到onload和refresh?