⊗jsrtPmHkUDV 18 of 47 menu

Prestatie-optimalisatie hook useDeferredValue in React

De prestatie-optimalisatie hook useDeferredValue, net zoals useTransition, helpt de werking van de grafische interface te versnellen, maar doet dit op een iets andere manier.

Bekijk de vorige les en kijk hoe we in het geval van useTransition de updatefunctie setFilterTerm verpakten. Welnu, de code voor het updaten van de state is niet altijd beschikbaar. Deze kan verborgen zijn, bijvoorbeeld in een bibliotheek die je hebt geïmporteerd. In dat geval kunnen we gebruikmaken van de hook useDeferredValue. Dan moeten we ofwel de state zelf verpakken, of het resultaat, dat met behulp van deze state wordt berekend, en zo de prioriteit ervan verlagen.

Laten we het volgende stukje code van de child component ProductList analyseren:

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

Let op dat we hier de variabele products zelf hebben verpakt in useDeferredValue, die we uit de props van de component hebben gehaald. Vervolgens hebben we het resultaat in deferredProducts opgeslagen, waarmee we verder zullen werken:

const deferredProducts = useDeferredValue(products);

Als we nu in het stukje code van de hoofdcomponent, dat we in de vorige les hebben bekeken, de regel:

const [isPending, startTransition] = useTransition();

En de regel met het gebruik van isPending verwijderen:

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

En ook de verpakking van de functie setFilterTerm weghalen, dan krijgen we hetzelfde resultaat als in de vorige les:

function updateFilterHandler(event) { setFilterTerm(event.target.value); }
Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren