Virtualisoinnin yhdistäminen datan hakuun
Toteuttakaa infinite scroll käynnistämällä datan haku, kun virtualisoitu lista saavuttaa loppunsa.
Virtualisoinnin yhdistäminen datan hakuun on ilmainen React Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu React Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. React Academy-kurssilla on yhteensä 4 oppituntia.
Infinite scroll -malli
Infinite scroll lataa lisää dataa käyttäjän lähestyessä listan loppua sen sijaan, että sivutettaisiin erillisillä sivupainikkeilla. Yhdessä virtualisoinnin kanssa se mahdollistaa valtavien tietojoukkojen sujuvan selaamisen.
Lista näyttää vain näkyvät rivit, ja uutta dataa haetaan taustalla juuri ennen kuin käyttäjä saavuttaa listan alaosan.
onItemsRendered-callback
react-windowin listakomponentit hyväksyvät onItemsRendered-callbackin, joka ilmoittaa parhaillaan renderöitävien kohteiden indeksit. Se antaa näkyvien kohteiden ja overscan-alueen alku- ja loppuindeksit.
Tämä callback toimii liittymäkohtana vieritykseen. Sen avulla voidaan selvittää, kuinka pitkälle käyttäjä on vierittänyt listaa, ilman että raakoja vieritystapahtumia tarvitsee käsitellä itse.
overscanStopIndex-arvon havaitseminen itemCount-arvon lähellä
Jotta tiedetään, milloin dataa pitää hakea lisää, verrataan onItemsRendered-callbackin overscanStopIndex-arvoa nykyiseen itemCount-arvoon. Kun renderöity ikkuna lähestyy ladatun datan loppua, dataa tarvitaan lisää.
Overscanin loppuindeksin käyttäminen antaa hieman etumatkaa ja käynnistää haun vähän ennen kuin käyttäjä todella saavuttaa viimeisen rivin.
Haun käynnistäminen lähellä loppua
Kun loppuindeksi ylittää kynnyksen, esimerkiksi kun se on yhden näytöllisen päässä itemCount-arvosta, kutsutaan seuraavan sivun hakufunktiota. Kutsu on suojattava, jotta useita päällekkäisiä pyyntöjä ei käynnistetä.
Latauslippu tai sen tarkistaminen, onko haku jo käynnissä, estää päällekkäiset pyynnöt käyttäjän vierittäessä laukaisualueen läpi.
Latausilmaisin viimeisenä kohteena
Siisti ratkaisu on asettaa itemCount ladattujen kohteiden määrää yhtä suuremmaksi, kun dataa on vielä saatavilla. Ylimääräisellä rivillä renderöidään latausilmaisin, joka kertoo haun olevan käynnissä.
Kun uutta dataa saapuu, määrä kasvaa ja latausrivi korvautuu oikealla sisällöllä. Näin käyttäjä saa sujuvan visuaalisen palautteen.
react-window-infinite-loader
react-window-infinite-loader-oheispaketti hoitaa tämän logiikan puolestasi. Annat sille isItemLoaded-, loadMoreItems- ja itemCount-arvot, ja se kutsuu lataajaasi, kun käyttäjä vierittää kohti lataamattomia rivejä.
Se huolehtii ladattujen alueiden seurannasta ja estää tarpeettomat latauskutsut, mikä yksinkertaistaa luotettavan infinite scroll -toteutuksen rakentamista.
Paikkarivit latauksen aikana
Lataamattomille indekseille voi renderöidä tyhjien kohtien sijaan paikka- tai skeleton-rivejä. Renderöintifunktio tarkistaa, onko indeksin kohde ladattu, ja näyttää skeletonin, jos sitä ei ole ladattu.
Skeletonit säilyttävät asettelun ja viestivät etenemisestä, mikä tuntuu paremmalta kuin tyhjä tila seuraavan sivun latautumista odotettaessa.
Virhe- ja uudelleenyritysrivit
Haussa voi tapahtua virhe, joten virheet on käsiteltävä hallitusti. Listan loppuun voi renderöidä erillisen virherivin, jossa on uudelleenyrityspainike. Painike kutsuu latausfunktiota uudelleen epäonnistuneen alueen osalta.
Näin lista pysyy käytettävänä tilapäisen virheen jälkeen, ja käyttäjällä on selkeä tapa jatkaa ilman koko sivun lataamista uudelleen.
Kursori- ja offset-sivutus
Infinite-listojen syöttämiseen käytetään kahta yleistä sivutustapaa. Offset-sivutus tekee pyynnön sivunumeron tai ohitettavien kohteiden määrän perusteella, kun taas kursorisivutus pyytää viimeksi nähtyä kohdetta osoittavan opaakin kursorin jälkeisiä kohteita.
Kursorisivutus on yleensä luotettavampi reaaliaikaiselle, muuttuvalle datalle, koska se välttää siirtymät ja päällekkäisyydet, joita offset-arvot voivat aiheuttaa kohteita lisättäessä.
React Query useInfiniteQuery -yhdistelmä
React Query useInfiniteQuery sopii luontevasti yhteen virtualisoinnin kanssa. Se hallitsee haetut sivut, seuraavan kursorin sekä lataus- ja virhetilat, kun taas react-window renderöi sivut tehokkaasti.
Sivut litistetään yhdeksi taulukoksi listaa varten, ja onItemsRendered-kynnyksestä kutsutaan fetchNextPage-funktiota. Näin välimuisti ja uudelleenyritykset ovat käytettävissä ilman erillistä toteutusta.
Pikatarkistus: infinite scroll -laukaisuehto
Tunnista, milloin virtuaalisoidussa infinite-listassa pitää hakea lisää dataa.
Kertaus: virtualisointi ja datan haku
Infinite scroll lataa sivuja, kun käyttäjä lähestyy listan loppua. onItemsRendered ilmoittaa indeksit, ja overscanStopIndex-arvon vertaaminen itemCount-arvoon kertoo, milloin dataa pitää hakea. Päällekkäiset pyynnöt estetään suojauksella.
Käytä paikka- ja virherivejä sekä react-window-infinite-loaderia seurannan helpottamiseen ja kursorisivutusta reaaliaikaiselle datalle. React Query useInfiniteQuery hallitsee sivuja, kursoreita ja tiloja yhdessä react-windowin renderöinnin kanssa.
Opi React tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 88
- Oppitunnit
- 324
Usein kysytyt kysymykset
Onko oppitunti ”Virtualisoinnin yhdistäminen datan hakuun” ilmainen?
Kyllä – oppitunnin ”Virtualisoinnin yhdistäminen datan hakuun” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko React Academy-kurssin, päivitä CoddyKit PROhon. React Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Virtualisoinnin yhdistäminen datan hakuun”?
Toteuttakaa infinite scroll käynnistämällä datan haku, kun virtualisoitu lista saavuttaa loppunsa. Harjoittelet React Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni React Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin React Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Virtualisoinnin yhdistäminen datan hakuun”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä React Academy-oppitunnilla?
Kyllä. Jokainen React Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Suurten listojen renderöinnin ongelma
- FixedSizeList: tuhansien kohteiden renderöinti
- VariableSizeList: rivien dynaamiset korkeudet
- Virtualisoinnin yhdistäminen datan hakuun