Javascript 加载gif,然后转换到reactjs上的网页

Javascript 加载gif,然后转换到reactjs上的网页,javascript,reactjs,react-redux,gif,Javascript,Reactjs,React Redux,Gif,我有一个react js应用程序,当加载一个页面时,在开始加载一个gif。我想要一种方法,使整个网站是完全加载,然后gif将停止,并将作出过渡,以显示一个准备好的网站,这种过渡可以淡出或增长周期,目前的gif是硬编码超时有办法做到这一点吗 目前,这是负责加载gif的代码: loader.js文件: import loder from "../assets/gifs/loading.gif" const Loader = () => { return (

我有一个react js应用程序,当加载一个页面时,在开始加载一个gif。我想要一种方法,使整个网站是完全加载,然后gif将停止,并将作出过渡,以显示一个准备好的网站,这种过渡可以淡出或增长周期,目前的gif是硬编码超时有办法做到这一点吗

目前,这是负责加载gif的代码:

loader.js文件:

import loder from "../assets/gifs/loading.gif"
const Loader = () => {
    return (
        <div
        style={{
          background: "#F7D036",
          height:'100%',
          width:"100%"

        }}
      >
          
        <br/><br/><br/><br/><br/><br/><br/><br/><br/>  
        <center>
        <img src={loder} height="200" alt=""/></center>
         </div>
    )
}

  useEffect(() => {
  
    getAllCategories();
    setTimeout(() => setLoading(false), 2000);
  }, [getAllCategories]);

 return (
    <Router>
      {loading == true ? (
        <Loader />
      ) : (

some code ) 



从“./assets/gifs/loading.gif”导入房客
常量加载器=()=>{
返回(












) }
app.js文件:

import loder from "../assets/gifs/loading.gif"
const Loader = () => {
    return (
        <div
        style={{
          background: "#F7D036",
          height:'100%',
          width:"100%"

        }}
      >
          
        <br/><br/><br/><br/><br/><br/><br/><br/><br/>  
        <center>
        <img src={loder} height="200" alt=""/></center>
         </div>
    )
}

  useEffect(() => {
  
    getAllCategories();
    setTimeout(() => setLoading(false), 2000);
  }, [getAllCategories]);

 return (
    <Router>
      {loading == true ? (
        <Loader />
      ) : (

some code ) 




useffect(()=>{
getAllCategories();
setTimeout(()=>setLoading(false),2000);
},[getAllCategories]);
返回(
{loading==true(
) : (
(一些代码)

我们可以使用window.onload()事件监听器的方法,在您的情况下,执行会是这样的,而且您还需要使用状态来有效地管理它们

window.onload=(e)=>{
//你的状态在这里改变
设置加载(假);
}
window.onload监听器将等待整个页面加载,您必须首先启动加载程序,然后使用useffect切换此函数,如

useffect(()=>{
// 
设置加载(真);
//将window.onload事件包装到函数中,并在此处调用它
windowLoadFunction();
}, [])
你好,麦克斯,根据评论, 我们可以做的是启动你的加载程序,就像你必须在默认情况下将加载程序的状态设置为true一样,这样你的页面开始加载, 因此,您可以使用useState属性通过deault将其设置为true,并向加载程序添加css类,还可以添加id,这样我们就可以使用document.getElementById()获取它,正如答案中所述,当我们将加载程序状态切换为false时,我们可以通过像document.getElementById(“加载程序”)一样访问它来更改加载程序的类。className=“你的动画css淡出类”,就是这样,如果你想让你的加载器先淡出,那么先调用类更改方法,然后你可以将setLoader类调用为false

const[loading,setLoader]=useState(true);
useffect(()=>{
window.onload=()=>{
//使用css将gif的类更改为淡出
//更改此setTimeout函数中的时间,使其在动画结束时立即触发,与动画持续时间匹配,并在动画结束前20毫秒左右启动,
document.getElementById(“加载程序”).className=“淡出加载程序”;
设置超时(()=>{
//这将确保加载程序不再显示,您的主要内容将弹出
setLoader(错误)
}, 60) 
//匹配加载器输出转换的时间,使转换平稳
}
},[])
{!正在加载}?
主要内容:
装载机元件
你的css类应该看起来像(App.css)

.loader类{
显示:可见;
}
.淡出加载器{
//将淡入淡出动画添加到这个类中,你可以在Animista获得它们
}

谢谢您的回答,但我不知道这如何帮助我从GIF过渡到网页,例如循环过渡或淡入淡出……您能详细说明一下吗?