javascript - 使用 onload 在 React 中欢迎加载程序问题
问题描述
我正在使用 React 实现欢迎加载程序。第一次加载页面时它工作正常。但是当我再次刷新页面时,加载器不会在加载时消失。这是代码->
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 />}
</>
)
}
解决方案
因为一旦你添加了一个事件监听器就会调用加载事件,所以打开一个新选项卡你的加载事件将被调用,但是你的刷新加载事件不会被调用,所以setLoaderHandle
也不会被调用。
您可以调用setLoaderHandle
内部的 useEffect 以确保在每个组件挂载上都调用它。
useEffect(() => {
setIsLoader(true);
window.addEventListener("load", setLoaderHandle);
setLoaderHandle();
return () => {
window.removeEventListener("load", setLoaderHandle);
};
}, []);
推荐阅读
- python - 如何在 Grakn 中使用 Python 客户端计算连接组件
- php - 来自两个实体的关系,建议
- angular - 在 Angular 中编辑和保存表单输入
- python - Pd:将一列列表转换为字符串列
- firebase - 如何计算子集合读取?
- python - Spark,Parquet:在时间戳列引发错误后过滤 DataFrame
- database - 即使在压缩时,Rocks DB 或 Level DB 也会写入日志吗?
- python - 退出程序后如何保持kivy CheckBox处于活动状态
- php - Laravel - 获取关系计数
- google-maps - 如何修复此错误,未捕获的语法错误?使用 google-api 地图