⊗jsrtPmHkUDV 18 of 47 menu

Performance-Optimierung Hook useDeferredValue in React

Der Performance-Optimierung Hook useDeferredValue, genauso wie useTransition, hilft, die Arbeit der grafischen Oberfläche zu beschleunigen, tut dies aber auf etwas andere Weise.

Werfen Sie einen Blick auf die letzte Lektion und sehen Sie sich an, wie wir im Fall von useTransition die Update-Funktion setFilterTerm umschlossen haben. Nun, der Code zum Aktualisieren des States ist nicht immer verfügbar. Er kann beispielsweise in einer Bibliothek versteckt sein, die Sie eingebunden haben. In diesem Fall können wir auf den Hook useDeferredValue zurückgreifen. Dann müssen wir entweder den State selbst oder das Ergebnis, das mit Hilfe dieses States berechnet wird, umschließen, und dadurch seine Priorität verringern.

Lassen Sie uns den folgenden Codeausschnitt der Kindkomponente ProductList analysieren:

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

Beachten Sie, dass wir hier die Variable products selbst in useDeferredValue eingewickelt haben, die wir aus den Props der Komponente entnommen haben. Dann haben wir das Ergebnis in deferredProducts gespeichert, mit der wir weiterarbeiten werden:

const deferredProducts = useDeferredValue(products);

Wenn wir nun im Codeausschnitt der Hauptkomponente, den wir in der letzten Lektion betrachtet haben, die Zeile entfernen:

const [isPending, startTransition] = useTransition();

Und die Zeile mit der Verwendung von isPending:

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

Und außerdem die Umhüllung der Funktion setFilterTerm entfernen, dann erhalten wir das gleiche Ergebnis wie in der letzten Lektion:

function updateFilterHandler(event) { setFilterTerm(event.target.value); }
Deutsch
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wir verwenden Cookies für den Betrieb der Website, Analyse und Personalisierung. Die Datenverarbeitung erfolgt gemäß der Datenschutzerklärung.
alle akzeptieren anpassen ablehnen