有没有一种方法来确保使用React编写的网页已经完成加载?通常的JavaScript技巧似乎对React无效,因此您不能安全地使用以下内容:
document.readyState == 'complete' && jQuery.active == 0
我们正在进行自动化测试,因此我们无法访问客户端代码,因此我们无法或不应创建回调等以获取我们想要的信息。简单的方法是使用线程睡眠,但这非常不可靠,令人沮丧,并且是一种不好的做法。是否有另一种方法,例如执行将返回此类信息的JS脚本?
以防万一,如果有人需要...
以下方法是解决你的问题最好的方式。
function Component() {
const [loaded, setStatus] = useState(false);
document.onreadystatechange = () => {
setStatus(document.readyState === "complete");
}
return {loaded ? <Loaded />: <Loading />};
}
function yourComponent() {
const [isLoading, setLoader] = useState(true)
useEffect(() => {
// Here you can access your API to get the Network state instead on document ready
setLoader(document.readyState == 'complete' && jQuery.active == 0)
}, [])
return (
<div>
{isLoading && <Loader />}
{!isLoading && <OtherComponent />}
</div>
)}