⊗jsrtPmHkUTr 17 of 47 menu

रिएक्ट में प्रदर्शन अनुकूलन हुक useTransition

प्रदर्शन अनुकूलन हुक useTransition हमें GUI को ब्लॉक किए बिना स्टेट्स को अपडेट करने की अनुमति देता है।

इस हुक की मदद से हम किसी स्टेट के अपडेट को कम प्राथमिकता निर्दिष्ट कर सकते हैं, जो अन्य स्टेट्स के अपडेट को उच्च प्राथमिकता रखने और बिना किसी देरी के निष्पादित होने की अनुमति देगा।

एक उदाहरण के रूप में, उपयोगकर्ता द्वारा सर्च फ़ील्ड में कैरेक्टर्स दर्ज करने पर उत्पादों की ड्रॉपडाउन सूची को फ़िल्टर करना लिया जा सकता है। निश्चित रूप से, सूची स्वयं कुछ देरी के साथ दिखाई दे सकती है, लेकिन हम नहीं चाहेंगे कि सर्च फ़ील्ड में कैरेक्टर्स देरी के साथ दर्ज हों।

आइए देखें कि ऐसे मामलों में हुक 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>updating ...</p>} <ProductList products={filteredProducts} /> </div> );
हिन्दी
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
हम साइट के कार्य, विश्लेषण और व्यक्तिगतकरण के लिए कुकीज़ का उपयोग करते हैं। डेटा प्रसंस्करण गोपनीयता नीति के अनुसार किया जाता है।
सभी स्वीकार करें कॉन्फ़िगर करें अस्वीकार करें