⊗jsrxPmATADR 49 of 57 menu

Eliminazione della duplicazione delle richieste in Redux

Questa lezione ci sarà utile nel caso in cui all'avvio dell'applicazione venga inviata duplicata la richiesta dei dati, e poi arrivino coppie di prodotti con gli stessi id, e, di conseguenza, appaiano spaventosi avvisi rossi nella console del browser.

La causa di ciò risiede in una caratteristica del montaggio dei componenti in React 18 e versioni successive in modalità sviluppo (dev), quando si utilizza React.StrictMode (dicono che in modalità production non ci siano problemi). Prima il componente viene montato, poi smontato e rimontato nuovamente. Pertanto, la richiesta viene inviata due volte.

È possibile che quando studierai questo materiale, questo doppio montaggio in React sarà già stato modificato in qualche modo. Non approfondiremo troppo, ma useremo semplicemente l'hook di React useRef, che ci aiuterà a aggirare questo inconveniente.

Apriamo la nostra applicazione con i prodotti, e in essa il file ProductsList.jsx. Importiamoci l'hook useRef:

import { useEffect, useRef } from 'react'

E ora modifichiamo leggermente il seguente blocco di codice con useEffect:

useEffect(() => { if (productStatus === 'idle') { dispatch(fetchProducts()) } }, [productStatus, dispatch])

Per iniziare, introduciamo una nuova variabile dataFetch per useRef. Inizialmente impostiamo la sua proprietà current su false. Se l'applicazione è già stata avviata e, di conseguenza, la richiesta è stata inviata, allora la proprietà current sarà già true, il che significa che usciremo semplicemente dalla funzione e non avverrà un nuovo tentativo di richiesta dei dati. Quindi, il suddetto frammento di codice ora sarà così:

const dataFetch = useRef(false) useEffect(() => { if (dataFetch.current) return dataFetch.current = true if (productStatus === 'idle') { dispatch(fetchProducts()) } }, [productStatus, dispatch])

Ora avviamo nuovamente la nostra applicazione e con sollievo notiamo la scomparsa degli avvisi rossi nella console, e vediamo la lista dei prodotti senza duplicati, ora ce ne sono 8, come avevamo pianificato sul server. Ora in Redux DevTools le azioni, generate alla richiesta, non si ripetono più.

Apri la tua applicazione con gli studenti, e in essa il file StudentsList.jsx. Risolvi il problema della doppia richiesta, secondo quanto spiegato nella lezione, se presente.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta