React Academy · पाठ

गैर-अवरोधक UI अपडेट के लिए useTransition

महँगे स्टेट अपडेट को startTransition में रैप करें, ताकि UI प्रतिक्रियाशील बना रहे।

पाठ 2, कुल 4 में से13 चरण

गैर-अवरोधक UI अपडेट के लिए useTransition, CoddyKit पर React Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह React Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। React Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

स्वागत है

इस पाठ में आप useTransition हुक का इस्तेमाल करके महँगे स्टेट अपडेट को गैर-तात्कालिक के रूप में चिह्नित करेंगे, ताकि बैकग्राउंड में भारी रेंडरिंग होने के दौरान यूज़र इंटरफ़ेस प्रतिक्रियाशील बना रहे।

ब्लॉक करने वाले अपडेट की समस्या

जब आप किसी ऐसे सर्च बॉक्स में टाइप करते हैं जो बड़ी सूची को फ़िल्टर करता है, तो रीऐक्ट को हर कुंजी दबाने पर पूरी फ़िल्टर की गई सूची दोबारा रेंडर करनी पड़ती है। इससे इनपुट तुरंत अपडेट नहीं हो पाता और यूज़र इंटरफ़ेस धीमा महसूस होता है।

रीऐक्ट का समकालिक रेंडरिंग मोड

रीऐक्ट 18 में समकालिक रेंडरिंग शुरू हुई: रीऐक्ट स्टेट अपडेट को रेंडर करना शुरू कर सकता है, उसे रोक सकता है और अधिक जरूरी अपडेट, जैसे टाइप करना, को प्राथमिकता दे सकता है। useTransition वह हुक है जो आपको अपडेट को कम-प्राथमिकता वाले ट्रांज़िशन के रूप में वर्गीकृत करने देता है।

useTransition की मूल बातें

useTransition `[isPending, startTransition]` लौटाता है। गैर-तात्कालिक स्टेट अपडेट को `startTransition()` के अंदर रैप कीजिए। रीऐक्ट ट्रांज़िशन की तुलना में अन्य अपडेट, जैसे नियंत्रित इनपुट, को प्राथमिकता देगा।
const [isPending, startTransition] = useTransition();

const handleChange = (e) => {
  setInputValue(e.target.value); // urgent: update input immediately
  startTransition(() => {
    setFilteredList(filter(e.target.value)); // non-urgent
  });
};

लोडिंग यूज़र इंटरफ़ेस के लिए isPending

ट्रांज़िशन के संसाधित होने के दौरान `isPending` का मान `true` होता है। इसका इस्तेमाल लोडिंग स्पिनर दिखाने या पुराने परिणामों की सूची को धुंधला करने के लिए कीजिए, ताकि उपयोगकर्ताओं को पता चले कि अपडेट जारी है।
return (
  <>
    <input value={inputValue} onChange={handleChange} />
    {isPending && <Spinner />}
    <ResultList items={filteredList} />
  </>
);

startTransition के अंदर क्या रखना चाहिए

startTransition के अंदर केवल स्टेट अपडेट रखिए — असिंक्रोनस ऑपरेशन नहीं। महँगे रेंडर को शुरू करने वाले स्टेट अपडेट को ही रैप करना चाहिए।
// Correct
startTransition(() => setTab('heavy'));

// Wrong — async work outside React state
startTransition(async () => { await fetch(...); }); // not supported

हुक के बिना startTransition

अगर आपको `isPending` की जरूरत नहीं है, तो आप हुक के बिना सीधे रीऐक्ट से startTransition इम्पोर्ट करके कॉल कर सकते हैं।
import { startTransition } from 'react';

startTransition(() => setQuery(newValue));

टैब बदलने का उदाहरण

एक सामान्य उपयोग-स्थिति में, किसी टैब पर क्लिक करने से भारी कॉम्पोनेंट बदलता है। टैब बदलने की प्रक्रिया को startTransition में रैप कीजिए, ताकि सक्रिय टैब का संकेतक तुरंत अपडेट हो और भारी कॉम्पोनेंट बैकग्राउंड में रेंडर हो।
const [tab, setTab] = useState('posts');
const [isPending, startTransition] = useTransition();

const selectTab = (t) =>
  startTransition(() => setTab(t));

useTransition और useDeferredValue की तुलना

useTransition तब इस्तेमाल कीजिए जब स्टेट अपडेट का नियंत्रण आपके पास हो (आप setState को कॉल करते हैं)। useDeferredValue तब इस्तेमाल कीजिए जब आपको कोई ऐसा प्रॉप या मान मिलता है जिसे आप सीधे विलंबित नहीं कर सकते — यह स्वयं उस मान को विलंबित करता है।

ऑप्टिमाइज़ेशन का विकल्प नहीं

startTransition रेंडरिंग को तेज़ नहीं बनाता — यह केवल उसे टालता है। अगर किसी कॉम्पोनेंट को रेंडर होने में 500ms लगते हैं, तो उसे अब भी 500ms ही लगेंगे। वास्तव में धीमी सूचियों के लिए इसे React.memo या वर्चुअलाइज़ेशन के साथ मिलाकर इस्तेमाल कीजिए।

त्वरित जाँच

useTransition से प्राप्त isPending किस चीज़ को दर्शाता है?

पुनरावलोकन

useTransition आपको स्टेट अपडेट को गैर-तात्कालिक ट्रांज़िशन के रूप में वर्गीकृत करने देता है। जरूरी अपडेट, जैसे इनपुट, तुरंत रेंडर होते हैं; ट्रांज़िशन तब रेंडर होते हैं जब रीऐक्ट के पास पर्याप्त क्षमता होती है। लोडिंग की सूचना दिखाने के लिए isPending का इस्तेमाल कीजिए।

आगे

अगला पाठ: **इनपुट डिबाउंसिंग के लिए useDeferredValue** — इनपुट को तेज़ बनाए रखते हुए आप यूज़र इंटरफ़ेस के धीमे हिस्सों को दोबारा रेंडर होने में विलंब करेंगे।
शुरुआत निःशुल्क

एआई शिक्षक के साथ React सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
88
पाठ
324

अक्सर पूछे जाने वाले प्रश्न

क्या “गैर-अवरोधक UI अपडेट के लिए useTransition” पाठ निःशुल्क है?

हाँ—“गैर-अवरोधक UI अपडेट के लिए useTransition” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और React Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। React Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“गैर-अवरोधक UI अपडेट के लिए useTransition” में मैं क्या सीखूँगा?

महँगे स्टेट अपडेट को startTransition में रैप करें, ताकि UI प्रतिक्रियाशील बना रहे। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ React Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या React Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर React Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“गैर-अवरोधक UI अपडेट के लिए useTransition” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस React Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर React Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. रेस स्थितियाँ और इफ़ेक्ट की सफ़ाई
  2. गैर-अवरोधक UI अपडेट के लिए useTransition
  3. इनपुट डिबाउंसिंग के लिए useDeferredValue
  4. डेटा और कोड सीमाओं के लिए Suspense
← React Academy पर वापस जाएँ