⊗jsrtPmHkUTr 17 of 47 menu

A useTransition teljesítményoptimalizáló hook a React-ben

A useTransition teljesítményoptimalizáló hook lehetővé teszi számunkra, hogy a state-eket frissítsük anélkül, hogy blokkolnánk a felhasználói felületet.

Ezzel a hookkal alacsonyabb prioritást rendelhetünk egy state frissítéséhez, ami lehetővé teszi, hogy más state-ek frissítései magas prioritással rendelkezzenek és késleltetés nélkül hajtódjanak végre.

Példaként említhetjük egy terméklistának a szűrését, miközben a felhasználó karaktereket ír be a keresőmezőbe. Természetesen maga a lista megjelenhet valamilyen késéssel, de szeretnénk elkerülni, hogy a karakterek a keresőmezőbe késéssel jelenjenek meg.

Nézzük meg, hogyan segíthet ebben az esetben a useTransition hook. Tegyük fel, hogy van egy kódrészletünk a fő komponensben. Elemezzük meg:

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> ); }

Itt két változót látunk a useTransition számára. A isPending változó logikai értéket tartalmaz, és azt mutatja, befejeződött-e a frissítési folyamat, míg a startTransition egy függvény, amely lehetővé teszi a frissítés prioritásának csökkentését:

const [isPending, startTransition] = useTransition();

Van továbbá egy filterTerm state-ünk, amely a bemeneti mezőbe írt kifejezést tárolja, valamint egy setFilterTerm függvény annak beállításához:

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

Amikor karaktereket írunk be a bemeneti mezőbe, minden alkalommal meghívódik a updateFilterHandler függvény, amelyben a filterTerm frissül. Itt alkalmazzuk a useTransition hookunkat, becsomagolva a setFilterTerm beállító függvényt a startTransition függvénybe a következő módon:

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

Így alacsony prioritást állítottunk be a filterTerm state frissítéséhez, és a bemeneti mezőnk reagálékony marad.

A isPending változó segítségével jelezhetjük a felhasználónak, hogy a lista frissítése még folyamatban van. Jelenítsük meg ezt az információt a bemeneti mező alatt, amíg a lista frissül:

return ( <div> <input type="text" onChange={updateFilterHandler} /> {isPending && <p>frissítés folyamatban ...</p>} <ProductList products={filteredProducts} /> </div> );
Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás