⊗jsrtPmHkUDV 18 of 47 menu

Ytelsesoptimaliserings-hooken useDeferredValue i React

Ytelsesoptimaliserings-hooken useDeferredValue, akkurat som useTransition, hjelper til med å fremskynde arbeidet til grafiske grensesnitt, men gjør dette på en litt annen måte.

Ta en titt på forrige leksjon og se hvordan vi i tilfellet med useTransition innpakket oppdateringsfunksjonen setFilterTerm. Sannheten er at koden som oppdaterer state ikke alltid er tilgjengelig. Den kan være skjult, for eksempel i et bibliotek som du har koblet til. I dette tilfellet kan vi bruke hooken useDeferredValue. Da må vi innpakke enten selve staten, eller resultatet som beregnes ved hjelp av denne staten, og dermed redusere dens prioritet.

La oss analysere følgende kodesnutt fra barnekomponentet ProductList:

import {useDeferredValue} from 'react' function ProductList({ products }) { const deferredProducts = useDeferredValue(products); return ( <ul> {deferredProducts.map((product) => ( <li>{product}</li> ))} </ul> ); }

Legg merke til at her pakket vi i useDeferredValue selve variabelen products, som vi hentet fra komponentets props. Deretter skrev vi resultatet til deferredProducts, som vi vil jobbe videre med:

const deferredProducts = useDeferredValue(products);

Hvis vi nå i kodesnutten fra hovedkomponenten, som vi vurderte i forrige leksjon, fjerner linjen:

const [isPending, startTransition] = useTransition();

Og linjen med bruk av isPending:

{isPending && <p>oppdaterer ...</p>}

Og også fjerne innpakningen fra funksjonen setFilterTerm, så får vi det samme resultatet som i forrige leksjon:

function updateFilterHandler(event) { setFilterTerm(event.target.value); }
Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis