Combinare virtualizzazione e recupero dei dati
Implementi lo scorrimento infinito attivando il recupero dei dati quando la lista virtualizzata raggiunge la fine.
Combinare virtualizzazione e recupero dei dati è una lezione React Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento React Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso React Academy include 4 lezioni in totale.
Il modello dello scorrimento infinito
Lo scorrimento infinito carica altri dati quando l'utente si avvicina alla fine della lista, invece di usare la paginazione con pulsanti di pagina espliciti. In combinazione con la virtualizzazione, consente di esplorare enormi quantità di dati in modo fluido.
La lista mostra solo le righe visibili, mentre i nuovi dati vengono recuperati in background poco prima che l'utente raggiunga il fondo.
Il callback onItemsRendered
I componenti lista di react-window accettano un callback onItemsRendered che comunica quali indici degli elementi sono attualmente renderizzati. Fornisce gli indici di inizio e fine degli elementi visibili e di quelli in overscan.
Questo callback è il punto di aggancio allo scorrimento e consente di rilevare quanto l'utente ha già scorso la lista senza collegare direttamente gli eventi di scorrimento.
Rilevare overscanStopIndex in prossimità di itemCount
Per sapere quando recuperare altri dati, confronti overscanStopIndex restituito da onItemsRendered con itemCount corrente. Quando la finestra renderizzata si avvicina alla fine dei dati caricati, servono altri elementi.
Usare l'indice di fine dell'overscan concede un piccolo anticipo e attiva il recupero poco prima che l'utente raggiunga effettivamente l'ultima riga.
Attivare il recupero vicino alla fine
Quando l'indice di fine supera una soglia, ad esempio quando si trova a una schermata di distanza da itemCount, chiami la funzione di recupero per la pagina successiva. La protegga per evitare di inviare più richieste sovrapposte.
Un flag di caricamento o il controllo che una richiesta sia già in corso impedisce richieste duplicate mentre l'utente scorre la zona di attivazione.
Un indicatore di caricamento come ultimo elemento
Un espediente efficace consiste nell'impostare itemCount sul numero di elementi caricati più uno finché esistono altri dati. La riga aggiuntiva visualizza uno spinner, segnalando che il recupero è in corso.
Quando arrivano nuovi dati, il conteggio aumenta e la riga con lo spinner viene sostituita dal contenuto reale, offrendo un feedback visivo fluido.
react-window-infinite-loader
Il pacchetto complementare react-window-infinite-loader incapsula questa logica. Si forniscono isItemLoaded, loadMoreItems e itemCount e il pacchetto invoca la funzione di caricamento mentre l'utente scorre verso righe non caricate.
Gestisce il tracciamento degli intervalli già caricati e impedisce chiamate di caricamento ridondanti, semplificando la realizzazione di uno scorrimento infinito affidabile.
Righe segnaposto durante il recupero
Per gli indici non caricati è possibile visualizzare righe segnaposto o skeleton invece di lasciare spazi vuoti. La funzione di rendering verifica se l'elemento a un determinato indice è stato caricato e, in caso contrario, mostra uno skeleton.
Gli skeleton preservano il layout e comunicano l'avanzamento, offrendo una percezione migliore rispetto a uno spazio vuoto mentre arriva la pagina successiva.
Righe di errore e nuovo tentativo
Il recupero dei dati può fallire, quindi è importante gestire gli errori con attenzione. È possibile visualizzare in fondo una riga di errore speciale con un pulsante per riprovare, che invoca nuovamente la funzione di caricamento per l'intervallo non riuscito.
In questo modo la lista resta utilizzabile dopo un inconveniente e l'utente dispone di un modo chiaro per recuperare senza ricaricare l'intera pagina.
Paginazione con cursore e con offset
Due stili comuni di paginazione alimentano le liste infinite. La paginazione con offset effettua richieste in base al numero di pagina o al numero di elementi da saltare, mentre quella con cursore richiede gli elementi successivi a un cursore opaco che indica l'ultimo elemento visualizzato.
La paginazione con cursore è generalmente più affidabile per dati dinamici e soggetti a modifiche, perché evita gli spostamenti e le duplicazioni che gli offset possono causare quando vengono inseriti nuovi elementi.
Integrazione con React Query useInfiniteQuery
React Query useInfiniteQuery si abbina naturalmente alla virtualizzazione. Gestisce le pagine recuperate, il cursore successivo e gli stati di caricamento ed errore, mentre react-window esegue il rendering efficiente delle pagine appiattite.
Si appiattiscono le pagine in un unico array per la lista e si chiama fetchNextPage quando onItemsRendered raggiunge la soglia, ottenendo caching e retry senza costi aggiuntivi.
Verifica rapida: condizione di attivazione dello scorrimento infinito
Individui quando recuperare altri dati in una lista infinita virtualizzata.
Riepilogo: virtualizzazione con recupero dei dati
Lo scorrimento infinito carica le pagine quando l'utente si avvicina alla fine. onItemsRendered comunica gli indici e il confronto tra overscanStopIndex e itemCount indica quando effettuare il recupero, impedendo richieste duplicate.
Utilizzi righe segnaposto e di errore, react-window-infinite-loader per la gestione degli intervalli caricati e la paginazione con cursore per i dati dinamici. React Query useInfiniteQuery gestisce pagine, cursori e stati insieme al rendering di react-window.
Domande Frequenti
La lezione «Combinare virtualizzazione e recupero dei dati» è gratuita?
Sì — il testo completo di «Combinare virtualizzazione e recupero dei dati» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso React Academy, passa a CoddyKit PRO. Il corso React Academy include 4 lezioni in totale.
Cosa imparerò in «Combinare virtualizzazione e recupero dei dati»?
Implementi lo scorrimento infinito attivando il recupero dei dati quando la lista virtualizzata raggiunge la fine. Eserciti React Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare React Academy?
Non è richiesta alcuna esperienza precedente. React Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Combinare virtualizzazione e recupero dei dati»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione React Academy?
Sì. Ogni lezione React Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Il problema del rendering di liste numerose
- FixedSizeList: rendering di migliaia di elementi
- VariableSizeList: altezze dinamiche delle righe
- Combinare virtualizzazione e recupero dei dati