थीम अवस्था के लिए React Context
ऐसा ThemeProvider बनाएँ जो पूरे कंपोनेंट ट्री के लिए वर्तमान थीम और टॉगल फ़ंक्शन उपलब्ध कराए
थीम अवस्था के लिए React Context, CoddyKit पर React Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह React Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। React Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
ThemeContext बनाना
सबसे पहले, अपने कॉन्टेक्स्ट के आकार से मेल खाने वाले डिफ़ॉल्ट मान के साथ createContext() को कॉल करें: const ThemeContext = createContext({ theme: 'light', toggleTheme: () => {} })। डिफ़ॉल्ट मान का उपयोग केवल तब होता है जब कोई कंपोनेंट किसी पैरेंट प्रदाता के बिना कॉन्टेक्स्ट पढ़ता है, जिससे अलग-अलग कंपोनेंट के परीक्षण में सहायता मिलती है।
ThemeProvider कंपोनेंट
ThemeProvider कंपोनेंट एक ऐसा रैपर है जिसमें थीम से जुड़ा पूरा तर्क रहता है। यह माउंट होने पर सिस्टम की पसंद पढ़ता है, theme स्थिति संभालता है, toggleTheme फ़ंक्शन उपलब्ध कराता है और चाइल्ड कंपोनेंट्स को ThemeContext.Provider value={{ theme, toggleTheme }} में लपेटता है। इसे अपने कंपोनेंट ट्री के ऊपरी हिस्से के पास रखें।
useContext से कॉन्टेक्स्ट का उपयोग करना
कोई भी अधीनस्थ कंपोनेंट useContext(ThemeContext) को कॉल करके थीम तक पहुँच सकता है। इससे वर्तमान कॉन्टेक्स्ट मान मिलता है, जिसमें theme और toggleTheme शामिल हैं। थीम बदलने पर कंपोनेंट अपने-आप फिर से रेंडर होता है, इसलिए प्रॉप्स को कई स्तरों से आगे भेजे बिना वह हमेशा समन्वयित रहता है।
DOM में data-theme का समन्वय करना
CSS चर मूल एलिमेंट पर मौजूद data-theme विशेषता पर निर्भर करते हैं। ThemeProvider में ऐसा useEffect जोड़ें जो theme बदलने पर हर बार चले: document.documentElement.setAttribute('data-theme', theme)। इससे रिएक्ट की स्थिति और CSS परत के बीच सहज रूप से संबंध बनता है।
localStorage में उपयोगकर्ता की ओवरराइड सहेजना
पेज फिर से लोड होने पर उपयोगकर्ता की पसंद बनाए रखने के लिए, थीम बदलने पर हर बार localStorage में लिखें: localStorage.setItem('theme', theme)। आप इस तर्क को एक useLocalStorage कस्टम हुक में समाहित कर सकते हैं, जो स्थिति जैसी जोड़ी लौटाता है और हर अपडेट को अपने-आप सहेजता है।
localStorage से थीम शुरू करना
थीम की स्थिति शुरू करते समय पहले localStorage से पढ़ें: localStorage.getItem('theme')। यदि कोई सहेजा हुआ मान मौजूद न हो, तो window.matchMedia('(prefers-color-scheme: dark)').matches के माध्यम से सिस्टम की पसंद अपनाएँ। यह शुरुआत माउंट होने पर केवल एक बार होती है।
थीम की प्राथमिकता का क्रम
ऊँची से नीची प्राथमिकता का सही क्रम यह है: localStorage में सहेजी गई उपयोगकर्ता की पसंद, फिर सिस्टम OS की पसंद और अंत में कोड में तय डिफ़ॉल्ट मान, जो आम तौर पर light होता है। यह क्रम सुनिश्चित करता है कि अंतिम नियंत्रण हमेशा उपयोगकर्ता के पास रहे और यदि उसने ऐप में स्पष्ट रूप से कोई विकल्प नहीं चुना है, तो उसकी OS सेटिंग का भी सम्मान हो।
सुविधाजनक useTheme हुक
हर कंपोनेंट में सीधे useContext(ThemeContext) को कॉल करने से कार्यान्वयन संबंधी विवरण सामने आ जाते हैं। इसके बजाय, एक useTheme हुक निर्यात करें: function useTheme() { return useContext(ThemeContext); }। अब कंपोनेंट useTheme आयात करके उसे कॉल कर सकते हैं, बिना यह जाने कि अंदरूनी कॉन्टेक्स्ट कैसे काम करता है।
टॉगल फ़ंक्शन उपलब्ध कराना
toggleTheme फ़ंक्शन light और dark के बीच बदलता है: setTheme(prev => prev === 'light' ? 'dark' : 'light')। इसे कॉन्टेक्स्ट के माध्यम से उपलब्ध कराएँ, ताकि ट्री में कहीं भी मौजूद कोई बटन इसे चला सके। स्थिति एक ही स्थान पर रहती है और टॉगल तर्क हर जगह साझा होता है।
कॉन्टेक्स्ट मान को मेमोाइज़ करना
ThemeProvider के हर रेंडर पर कॉन्टेक्स्ट मान वाली वस्तु फिर से बनाई जाती है। सभी कॉन्टेक्स्ट का उपयोग करने वाले कंपोनेंट्स के अनावश्यक री-रेंडर रोकने के लिए इसे useMemo में लपेटें: const value = useMemo(() => ({ theme, toggleTheme }), [theme])। कॉन्टेक्स्ट प्रदाताओं के लिए यह प्रदर्शन सुधारने का एक सामान्य तरीका है।
ThemeProvider का परीक्षण
परीक्षणों में, रेंडर किए गए कंपोनेंट्स को ऐसी कस्टम renderWithTheme उपयोगिता में लपेटें जो ThemeProvider को रैपर के रूप में उपयोग करती हो। अलग-अलग परीक्षण के लिए आप एक सरल नकली कॉन्टेक्स्ट भी बना सकते हैं: ThemeContext.Provider value={{ theme: 'dark', toggleTheme: jest.fn() }}। इससे आप कंपोनेंट्स का किसी विशिष्ट थीम स्थिति में परीक्षण कर सकते हैं।
थीम की प्राथमिकता का क्रम
ऐप की थीम शुरू करते समय ऊँची से नीची प्राथमिकता का सही क्रम क्या है?
पाठ का पुनरावलोकन: थीम स्थिति के लिए रिएक्ट कॉन्टेक्स्ट
एक ThemeContext और ऐसा ThemeProvider बनाएँ जो थीम की स्थिति संभाले, उसे localStorage के साथ समन्वयित करे और दस्तावेज़ पर data-theme सेट करे। साफ़-सुथरे उपयोग के लिए useTheme सुविधाजनक हुक अपनाएँ। प्राथमिकता का क्रम है: सहेजी गई पसंद, फिर सिस्टम की पसंद और अंत में डिफ़ॉल्ट मान।
एआई शिक्षक के साथ React सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 88
- पाठ
- 324
अक्सर पूछे जाने वाले प्रश्न
क्या “थीम अवस्था के लिए React Context” पाठ निःशुल्क है?
हाँ—“थीम अवस्था के लिए React Context” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और React Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। React Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“थीम अवस्था के लिए React Context” में मैं क्या सीखूँगा?
ऐसा ThemeProvider बनाएँ जो पूरे कंपोनेंट ट्री के लिए वर्तमान थीम और टॉगल फ़ंक्शन उपलब्ध कराए आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ React Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या React Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर React Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“थीम अवस्था के लिए React Context” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस React Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर React Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- सिस्टम की रंग योजना पहचानना
- थीम बदलने के लिए CSS वेरिएबल
- थीम अवस्था के लिए React Context
- थीम सुरक्षित रखना और फ़्लैश रोकना