如何解决显示加载文本/微调器,直到组件在 React 中完全加载文本、图像...等
我搜索了这样的解决方案,但我无法正确找到它,所以我问这个问题是否有人可以提供帮助。
这是我制作的沙盒,想法是这样的:我想显示加载文本,直到我的组件(假设整个网站:包括图像、文本......等)完全加载,尝试使用 useEffect 钩子来实现这一点,但是 useEffect 只显示加载文本,直到组件被安装,钩子会这样做,但是这个组件中的图像之类的东西还没有完全加载,所以这不起作用我想要。如果有人知道如何进行这项工作,我会很感激Spinner 应该根据您的 ISP 的速度显示对吗?因此,对于互联网连接较好的用户,加载文本/微调器的时间会更短,而对于其他用户,则会更长。
解决方法
您可以在组件上使用以下功能:
document.onreadystatechange = function () {
if (document.readyState === 'complete') {
console.log("do something");
}
}
或使用
控制所有文档的加载周期switch (document.readyState) {
case "loading":
// The document is still loading.
break;
case "interactive":
// The document has finished loading. We can now access the DOM elements.
// But sub-resources such as scripts,images,stylesheets and frames are still loading.
console.log('do something')
break;
case "complete":
// The page is fully loaded.
console.log("do something");
break;
}
如果需要,您也可以使用此功能:
window.addEventListener("load",event => {
var image = document.querySelector('img');
var isLoaded = image.complete && image.naturalHeight !== 0;
console.log(isLoaded);
});
,
你可以有一个“加载”状态,一开始是真的,然后用 onload 函数改变它的值。
你可以这样使用它:
<div onload={setLoading(false)}>
<img src="..." />
<img src="..." />
<img src="..." />
</div>
Onload 在所有子内容加载完毕后执行。您可以在 https://www.w3schools.com/tags/ev_onload.asp
阅读更多相关信息版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。