Io sono di veramente nuovo per ReactJs, JS e praticamente tutte di sviluppo web. Ho cercato di creare una singola pagina, portafoglio sito web utilizzando ReactJS e volevo provare alcune tecniche più avanzate, come l'utilizzo di ganci. Ho voluto creare un semplice effetto in cui un'animazione una volta (quando un utente accede al mio sito web), quindi sono portato per il sito principale. Tutte le risorse che ho trovato on-line riguardano le schermate di caricamento, mentre il recupero dei dati da un API. Ecco il mio codice per il caricamento della schermata:
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>
);
}
Sto utilizzando un semplice reagire pacchetto chiamato tipico che dà un bel animazione di parole digitate sulla schermata simile a una macchina da scrivere, e poi viene eliminato, quindi la prossima bit di testo viene mostrato ecc.. questo solo loop di una volta. Ho usato il useState e useEffect ganci con un timer per setLoading per falso in 18 anni, che è quando si interrompe l'animazione. Come potete vedere ho il rendering dell'animazione solo se il carico è vero, usando un operatore ternario, poi una volta che il caricamento viene impostata su false, null viene visualizzato. Il mio app.js assomiglia a questo:
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;
(Scusate per il terribile JSX). Il problema che sto avendo è che sia la navbar e la schermata di caricamento carichi allo stesso tempo. Non sono sicuro di come nascondere tutti i miei altri componenti fino a quando l'animazione è finito. Tutto ciò che cerco è mooolto complicato e davvero non sembra molto efficace per tutti. Apprezzo qualsiasi aiuto grazie!