⊗jsrtPmHkUDV 18 of 47 menu

Hook optymalizacji wydajności useDeferredValue w React

Hook optymalizacji wydajności useDeferredValue, podobnie jak useTransition, pomaga przyspieszyć działanie interfejsu użytkownika, ale robi to nieco inaczej.

Spójrz na poprzednią lekcję i zobacz, jak w przypadku useTransition opakowywaliśmy funkcję aktualizującą setFilterTerm. Otóż, kod aktualizujący stan nie zawsze może być dostępny. Może być ukryty, na przykład w bibliotece, którą podłączyłeś. W tym przypadku możemy skorzystać z hooka useDeferredValue. Wtedy musimy opakować albo sam stan, albo wynik obliczany za pomocą tego stanu, tym samym obniżając jego priorytet.

Przeanalizujmy następujący fragment kodu komponentu potomnego ProductList:

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

Zwróć uwagę, że tutaj opakowaliśmy w useDeferredValue samą zmienną products, którą wzięliśmy z propsów komponentu. Następnie zapisaliśmy wynik w deferredProducts, z którą będziemy dalej pracować:

const deferredProducts = useDeferredValue(products);

Teraz, jeśli we fragmencie kodu głównego komponentu, który rozważaliśmy w poprzedniej lekcji, usuniemy linijkę:

const [isPending, startTransition] = useTransition();

Oraz linijkę z użyciem isPending:

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

A także zdjąć opakowanie z funkcji setFilterTerm, to otrzymamy ten sam wynik, co w poprzedniej lekcji:

function updateFilterHandler(event) { setFilterTerm(event.target.value); }
Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć