Rakennuskylpylöissä, joskus törmäämme tarpeeseen näyttää tietoja äärettömän vierityksen tekniikalla — eli jatkuvasti lataamalla tietoja käyttäjän vierittäessä sivua.

siitä lähtien, kun Intersection Observer API lisättiin selaimiin, uudelleenkäytettävän infinite scroll-komponentin rakentaminen ei ole koskaan ollut helpompaa. Opetellaan, miten voimme luoda tällaisen komponentin tämän API: n avulla.

huomaa, että emme aio sukeltaa risteyskohtaan Observer API, joten jos et tunne sitä, suosittelen lukemaan tämän artikkelin etukäteen.

pääkäsitteenä on sijoittaa havainnoitavissa oleva elementti näytettävien kohteiden luettelon loppuun, jotta tietoja voidaan lisätä, kun käyttäjä saavuttaa luettelon pohjan.

haluamme tehdä siitä mahdollisimman joustavan, joten annamme kuluttajillemme haluamansa mallin ng-content. Sen alle lisätään ankkurielementti, joka toimii kohdeelementtinä, jota tarkkailemme.

luodaan Risteyshavaitsija:

ensin luodaan uusi IntersectionObserver, joka saa entries argumentikseen. Tätä funktiota kutsutaan aina, kun havaittu Elementti saapuu kuvaikkunaan.

elementin näkyvyystilan voi tarkistaa katsomalla isIntersection ominaisuutta. Jos isIntersecting pitää paikkansa, kohdeelementti on tullut vähintään yhtä näkyväksi kuin ohitettu kynnys. Oletuskynnys on 0, eli heti kun yksikin pikseli on näkyvissä, takaisinkutsu suoritetaan.

seuraavaksi kutsutaan observe() menetelmää, jonka ohi se on ankkurielementti. Tämä aloittaa tämän elementin havainnoinnin.

🦊 tuki vieritettäviä säiliöitä

root ominaisuus ilmaisee elementin, jota käytetään näköaukkona kohteen näkyvyyden tarkistamiseen. Kun asetuksena on null, oletusarvo on selaimen näköaukko.

on aikoja, jolloin tarvitaan vieritettävää säiliötä, ja silloin toivoisimme, että säiliö toimisi root elementtinä. Tukekaamme tätä toimintoa:

lisäämme tarkistuksen nähdäksemme, onko nykyinen isäntäelementti vieritettävä säiliö. Jos se on, asetamme sen root alkuaineeksi.

lopulta emme halua sovellukseemme muistivuotoja, joten irrotamme havaitsijan komponentin tuhoutuessa:

se on niin yksinkertaista.

katsotaan, miten sitä käytetään:

tai vieritettävän kontin kanssa:

selaintuki

intersection observer API toimii useimmissa suurimmissa selaimissa. Jos haluat tukea vanhoja selaimia, kuten IE, voit ladata polyfill-tiedoston tai varasuunnitelman vieritystapahtumaan runtime-ohjelmassa.

🚀 Oletko jo kokeillut Akitaa?

johtaviin valtionhallinnon kirjastoihin kuuluva Akita on ollut käytössä lukemattomissa tuotantoympäristöissä. Se kehittyy ja paranee koko ajan.

olipa kyse palvelimelta saapuvista kokonaisuuksista tai UI state-datasta, akitalla on mittatilaustyönä tehtyjä varastoja, tehokkaita työkaluja ja räätälöityjä laajennuksia, joiden avulla voit hallita tietoja ja tehdä tyhjäksi massiivisen boilerplate-koodin tarpeen. Suosittelemme, että kokeilet sitä.

Seuraa minua Mediumilla tai Twitterissä ja lue lisää Angulasta, Akitasta ja JS: stä!

Vastaa

Sähköpostiosoitettasi ei julkaista.