Come andare in asincrono con useEffect

Esegui attività asincrone con useEffect in modo pulito e sicuro

Dalla chiamata di un'API per impostare un ritardo di timeout, sono sicuro che ti sei già chiesto come farlo correttamente quando si utilizza l'hook React useEffect. Se sembra ancora sfocato, allora questo articolo è per te. In caso contrario, potresti almeno imparare un approccio diverso per portare a termine il lavoro o sentirti più sicuro mentre lo fai.

Presenterò 3 modi per farlo in modo sicuro e ordinato. Ma prima, voglio mostrare cosa NON dovresti fare.

Cosa NON dovresti fare ❌

Non eseguire l'attività asincrona direttamente in useEffect, invece, racchiude SEMPRE l'attività asincrona in una funzione e chiamala solo da useEffect.

Ecco un esempio di cosa NON dovresti fare:

useEffect(async () => {
   await getData();
},[]);

Inoltre, fare ciò che ha mostrato questo esempio BAD, porterebbe a un errore React:

I callback degli effetti sono sincroni per prevenire le condizioni di gara.

Bene, ora siamo al sicuro per passare alle buone pratiche ⬇️

1. Definizione della funzione asincrona all'interno dell'hook

Se intendi eseguire un'attività asincrona, ad esempio ottenere dei dati da un'API, e aggiornare lo stato di caricamento del tuo componente, devi definire la funzione all'interno dell'hook e poi chiamarla:

useEffect(() => {
async function getData() {
    setLoading(false);
    const reponse = await myApi.getSomeGoodData()
    setLoading(true);
   }
getData();
},[]);

2. Definizione della funzione asincrona al di fuori dell'hook

Se si prevede di riutilizzare la funzione asincrona definita, una buona idea è definirla nel corpo del componente funzionale, avvolto useCallbackdall'hook. Controlla:

const getData = useCallback(() => {
    setLoading(false);
    const reponse = await myApi.getSomeGoodData()
    setLoading(true);
}, [])
useEffect(() => {
getData()
},[getData])

3. Impostazione di un intervallo o di un timeout

I 2 esempi precedenti erano principalmente incentrati sul recupero dei dati e sull'aggiornamento dello stato dei componenti. Questo mostra anche uno scenario comune per le attività asincrone all'interno di useEffect che sta impostando un intervallo o un timeout.

Il trucco è cancellare SEMPRE il timeout e l'intervallo impostato nel file useEffect.

Impostazione di un timeout

useEffect(() => {
const timeout = setTimeout(() => {
     // do something
   }, 100)
return () => {
      clearTimeout(timeout);
   }
},[])

useEffect(() => {
const interval = setInterval(() => {
       // do something
  }, 100)
return () => {
      clearInterval(interval);
  }
},[])

Gli esempi sopra ti copriranno per il 99,99% delle situazioni asincrone che potresti incontrare durante lo sviluppo di React. Ricorda solo di essere consapevole delle dipendenze degli effetti. Se non hai trovato il tuo caso negli esempi qui sotto, lascia un commento e lo esaminerò.

Grazie per aver letto

— Fernando Abolafio

Suggested posts

Ricerca di informazioni sui nomi di dominio

Un estratto da Small, Sharp Software Tools di Brian P. Hogan

Ricerca di informazioni sui nomi di dominio

Quando fai una richiesta a facebook.com, il tuo computer cerca il nome di dominio per tradurre quel nome di dominio in un indirizzo IP in modo che il tuo computer possa effettuare quella connessione.

Suggerimenti per la transizione alla sicurezza informatica senza un background tecnico.

Suggerimenti per la transizione alla sicurezza informatica senza un background tecnico.

Nel 2022 sono passato da un ruolo non tecnico alla sicurezza informatica. Ho conseguito la mia prima laurea in lingua tedesca, so che sei scioccato e curioso di sapere come sono riuscito a passare con successo, beh, è ​​appena successo.

Related posts

L'arte è sempre apolitica?

L'arte è sempre apolitica?

Ieri abbiamo chiuso le porte dell'Eurovision Song Contest di quest'anno con un gran finale scintillante e caotico in cui la cantante svedese Loreen ha portato a casa il trofeo, diventando la prima donna a vincere due volte e riportando la corona alla Svezia 50 anni dopo che gli ABBA hanno vinto la competizione con "Waterloo". Hanno continuato a diventare uno dei più grandi artisti nel canone della musica pop.

Finanziare la rimozione del carbonio nell'anno fiscale 24

La ripartizione delle richieste di stanziamenti di Carbon180 in tutti i percorsi

Finanziare la rimozione del carbonio nell'anno fiscale 24

Di Alyson Lee, consulente per gli affari governativi Il processo di stanziamento annuale del governo federale è fondamentale per i nostri sforzi per finanziare la rimozione dell'anidride carbonica (CDR). Ogni anno, Carbon180 invia richieste a vari uffici congressuali per aiutare a guidare dove fluiranno i dollari del prossimo anno.

i pronomi sono super spaventosi

Mi colpisce Improvvisamente come spesso accade È di nuovo la via di mezzo <No, non quello nel pacifico tu marrone, quello al carnevale> Ogni titolo a voce alta…..

Tieni traccia di chiunque abbia solo un numero di telefono | Indagine OSINT

Tieni traccia di chiunque abbia solo un numero di telefono | Indagine OSINT

Puoi essere un investigatore OSINT, un giocatore CTF o semplicemente qualcuno che riceve chiamate spam. Qualcuno che sta cercando di verificare il numero che hai visto in una pubblicità.