⊗jsrtPmHkUTr 17 of 47 menu

Der Performance-Optimierungs-Hook useTransition in React

Der Performance-Optimierungs-Hook useTransition ermöglicht es uns, Zustände zu aktualisieren, ohne die Benutzeroberfläche zu blockieren.

Mit diesem Hook können wir für die Aktualisierung eines Zustands eine niedrige Priorität festlegen, was es ermöglicht, dass die Aktualisierung anderer Zustände hohe Priorität hat und ohne Verzögerungen ausgeführt wird.

Als Beispiel kann die Filterung einer Dropdown-Liste von Produkten beim Eingeben von Zeichen in das Suchfeld angeführt werden. Natürlich kann die Liste selbst mit einer gewissen Verzögerung angezeigt werden, aber wir möchten nicht, dass die Zeichen im Suchfeld verzögert eingegeben werden.

Schauen wir uns an, wie uns der Hook useTransition in solchen Fällen helfen kann. Nehmen wir an, wir haben ein Code-Stück der Haupt- komponente. Analysieren wir es:

import { useTransition } from 'react'; import { useState } from 'react'; function App() { const [isPending, startTransition] = useTransition(); const [filterTerm, setFilterTerm] = useState(''); const filteredProducts = filterProducts(filterTerm); function updateFilterHandler(event) { startTransition(() => { setFilterTerm(event.target.value); }); } return ( <div> <input type="text" onChange={updateFilterHandler} /> <ProductList products={filteredProducts} /> </div> ); }

Hier sehen wir zwei Variablen für useTransition. Die Variable isPending enthält einen booleschen Wert und zeigt an, ob der Aktualisierungsprozess abgeschlossen ist, und startTransition ist die Funktion, die es ermöglicht, die Priorität der Aktualisierung herabzusetzen:

const [isPending, startTransition] = useTransition();

Wir haben auch den Zustand filterTerm, in dem der im Eingabefeld eingegebene Ausdruck gespeichert wird, und die Funktion setFilterTerm zu dessen Festlegung:

const [filterTerm, setFilterTerm] = useState('');

Bei der Eingabe von Zeichen in das Input-Feld wird jedes Mal die Funktion updateFilterHandler aufgerufen, in der die Aktualisierung von filterTerm stattfindet. Genau hier wenden wir unseren Hook useTransition an, indem wir die Funktion setFilterTerm in startTransition wie folgt wrappen:

function updateFilterHandler(event) { startTransition(() => { setFilterTerm(event.target.value); }); }

Auf diese Weise haben wir für die Aktualisierung des Zustands filterTerm eine niedrige Priorität festgelegt und unser Eingabefeld bleibt reaktionsschnell.

Mithilfe der Variable isPending können wir dem Benutzer anzeigen, dass die Aktualisierung der Liste noch im Gange ist. Geben wir diese Information unter dem Eingabefeld aus, während die Liste aktualisiert wird:

return ( <div> <input type="text" onChange={updateFilterHandler} /> {isPending && <p>updating ...</p>} <ProductList products={filteredProducts} /> </div> );
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