Jestem bardzo początkujący w ReactJS, JS i w zasadzie w całym przedsięwzięciu. Próbowałem stworzyć stronę internetową z portfolio na jednej stronie za pomocą ReactJS i chciałem spróbować bardziej zaawansowanych technik, takich jak używanie haków. Chciałem stworzyć prosty efekt, gdy animacja jest odtwarzana raz (gdy użytkownik po raz pierwszy wchodzi na moją stronę), a następnie są wyświetlane na stronie głównej. Wszystkie zasoby, które znalazłem w Internecie, dotyczą ekranów ładowania przy wyciąganiu danych z API. Oto mój kod do ekranu startowego:
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>
);
}
Używam bardzo prosty pakiet react pod nazwą typical, Który daje przyjemną animację słów, wybranych na ekranie, jak na maszynie do pisania, a następnie jest usuwany, a następnie wyświetlany jest następujący fragment tekstu itp. To powtarza się tylko jeden raz. Użyłem haki useState i useEffect z zegarem, aby ustawić wartość false w 18 sekund, kiedy animacja zatrzymuje się. Jak widać, jestem визуализирую animacje tylko w przypadku, gdy ładowanie jest prawdziwy, za pomocą тернарный operator, a następnie, jak tylko ładowanie zostanie ustawiona na wartość false, wyświetlona zostanie wartość null. Mój app.js wygląda tak:
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;
(Przepraszam za okropny JSX). Problem, z którym spotykam, polega na tym, że i pasek nawigacji i ekran ładowania są ładowane jednocześnie. Nie jestem pewien, jak ukryć wszystkie moje inne składniki, aż animacja nie zostanie zakończona. Wszystko, co próbuję, to zbyt skomplikowane i rzeczywiście wydaje się być bardzo wydajny. Doceniam każdą pomoc, dziękuję!