【发布时间】:2022-01-02 10:49:53
【问题描述】:
我对 ReactJs、JS 以及基本上所有的 Web 开发都很陌生。我尝试使用 ReactJS 创建一个单页投资组合网站,并想尝试一些更高级的技术,例如使用钩子。我想创建一个简单的效果,动画播放一次(当用户首次登录我的网站时),然后将它们带到主站点。我在网上找到的所有资源都与从 API 获取数据时的加载屏幕有关。这是我的加载屏幕代码:
import Typical from 'react-typical';
import "./Loading.scss";
import {useState, useEffect} from 'react';
const Loading = function Loading() {
const [loading, setLoading] = useState(false);
useEffect(() => {
setLoading(true)
setTimeout(() => {
setLoading(false)
},18000);
}, [])
return (
<div>
<h1 id="loading">
{ loading ? <Typical oop={1} wrapper = 'p'
steps={[
"Hello",
2000,
"My name is Leonard.",
3000,
"I am an aspiring developer",
3000,
"Welcome to my website!",
3000,
]} /> : null}
</h1>
</div>
);
}
我正在使用一个非常简单的 react 包,称为典型,它可以像打字机一样在屏幕上输入文字,然后被删除,然后显示下一段文字等。这只会循环一次。我使用了 useState 和 useEffect 钩子和一个计时器,在 18 秒内将 setLoading 设置为 false,这是动画停止的时间。如您所见,我仅在加载为真时才渲染动画,使用三元运算符,然后一旦加载设置为假,则显示空值。我的 app.js 看起来像这样:
import Nav from './Components/Nav';
import "./App.scss";
import Loading from './Components/Loading';
function App() {
return (
<div>
<Loading />
<main>
<Nav/>
</main>
</div>
);
}
export default App;
(为糟糕的 JSX 道歉)。我遇到的问题是导航栏和加载屏幕同时加载。在动画完成之前,我不确定如何隐藏所有其他组件。我尝试的一切都太复杂了,而且似乎根本没有效率。感谢您的帮助,谢谢!
【问题讨论】:
标签: javascript reactjs animation react-hooks react-component