⊗jsrtPmHkUTr 17 of 47 menu

Reactдаги useTransition ишчилик хукини оптимизациялаш

Ишчиликни оптимизациялаш хуки useTransition бизга график интерфейсини блокаламасдан стейтларни янгілаш имконияти беради.

Бу хук ёрдамида биз бирор стейтни янгилаш учун паст тартиб белгилашимиз mumkin, бу esa бошқа стейтларнинг янгиланиши юқори тартибга эга бўлишига ва кечиктирмасдан бажарилишига имкон беради.

Мисол тариқасида фойдаланувчи излов maydoniga белгилар киритганда товарларнинг тушум рўйхатини фильтралашни келтириш мумкин. Албатта, рўйхат ўзи бирор кечиктириш билан кўрсатилиши мумкин, лекин биз излов майдонига белгилар кечиктириш билан киритилишини истамаймиз.

Келинг, бугунги кунда 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 ўзгарувчиси ёрдамида биз фойдаланувчига рўйхат янгіланиши ҳали жараёнда эканлигини кўрсатишимиз мумкин. Бу маълумотни рўйхат янгіланayotganda киритиш майдони ostida кўрсатамиз:

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šuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeOʻzbekTiếng Việt
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш