⊗jsrtPmHkUTr 17 of 47 menu

Хукот за оптимизација на перформансите useTransition во React

Хукот за оптимизација на перформансите useTransition ни овозможува да ги ажурираме состојбите без блокирање на графичкиот интерфејс.

Со помош на овој хук можеме да поставиме низок приоритет за ажурирање на некоја состојба, што ќе им овозможи на ажурирањата на другите состојби да имаат висок приоритет и да се извршуваат без задоцнување.

Како пример може да се посочи филтрирање на падачка листа на производи додека корисникот внесува симболи во полето за пребарување. Се разбира, самата листа може да се прикажува со одредено задоцнување, но ние не би сакале симболите да се внесуваат во полето за пребарување со задоцнување.

Ајде да погледнеме како во вакви ситуации може да ни помогне хукот useTransition. Да претпоставиме дека имаме дел од кодот на главниот компонент. Ајде да го анализираме:

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

Овде гледаме две променливи за useTransition. Променливата isPending содржи Булова вредност и покажува дали процесот на ажурирање е завршен, додека startTransition е функцијата која овозможува да се намали приоритетот на ажурирањето:

const [isPending, startTransition] = useTransition();

Исто така, имаме состојба filterTerm, во која се чува изразот внесен во полето за внес и функцијата setFilterTerm за негово поставување:

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

При внесување симболи во полето за внес, секој пат се повикува функцијата updateFilterHandler, во која се случува ажурирање на filterTerm. Токму овде го применуваме нашиот хук useTransition, завиткувајќи ја функцијата за поставување setFilterTerm во startTransition на следниов начин:

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

На овој начин, поставивме низок приоритет за ажурирање на состојбата filterTerm и нашето поле за внес ќе остане респонзивно.

Со помош на променливата isPending можеме да му покажеме на корисникот дека ажурирањето на листата сè уште е во тек. Ајде да ја прикажеме оваа информација под полето за внес, додека листата се ажурира:

return ( <div> <input type="text" onChange={updateFilterHandler} /> {isPending && <p>Се ажурира ...</p>} <ProductList products={filteredProducts} /> </div> );
Македонски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние користиме колачиња за работата на веб-страната, анализа и персонализација. Обработката на податоци се врши во согласност со Политиката за приватност.
прифати ги сите прилагоди одбиј