React Academy · पाठ

स्थिति को localStorage के साथ समन्वयित करना

ऐसा useLocalStorage कस्टम हुक बनाइए, जो React स्थिति और localStorage को दोनों दिशाओं में समन्वयित रखे।

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

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

सीधा-सादा तरीका असंगत हो जाता है

पहली प्रवृत्ति localStorage को एक जगह पढ़ने और दूसरी जगह लिखने की होती है, लेकिन ये दोनों एक-दूसरे से असंगत हो सकते हैं। वे स्थिति अपडेट जिनमें स्थायी रूप से सहेजना भूल जाएँ, या वे सहेजे गए मान जो स्थिति में दिखाई न दें, त्रुटियाँ पैदा करते हैं।

आपको सत्य का एकमात्र स्रोत चाहिए, जो रिएक्ट की स्थिति और भंडारण को हमेशा एक साथ रखे।

useLocalStorage कस्टम हुक

साफ़ समाधान एक useLocalStorage हुक है, जो useState को लपेटता है और परिवर्तनों को अपने-आप स्थायी रूप से सहेजता है। यह useState की तरह ही एक मान और उसे बदलने वाला फ़ंक्शन लौटाता है।

इसका उपयोग करने वाला कोड इसे सामान्य स्थिति की तरह ही इस्तेमाल करता है, लेकिन उसे स्थायित्व की सुविधा अपने-आप मिल जाती है।

आलसी आरंभीकरण फ़ंक्शन

localStorage पढ़ना समकालिक काम है, इसलिए आपको इसे हर रेंडर पर नहीं करना चाहिए। useState को एक फ़ंक्शन दें, जिसे आलसी आरंभीकरण कहते हैं, ताकि पढ़ने का काम माउंट होने पर केवल एक बार हो।

उस फ़ंक्शन के भीतर आप सहेजे गए मान को पार्स करते हैं या दिया गया डिफ़ॉल्ट मान लौटाते हैं।

आलसी आरंभीकरण क्यों महत्वपूर्ण है

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

localStorage पढ़ते समय इससे हर रेंडर पर मुख्य थ्रेड का दोहराया जाने वाला समकालिक काम बच जाता है।

useEffect के माध्यम से समन्वयन

अपडेट को स्थायी रूप से सहेजने के लिए एक useEffect जोड़ें, जो मान बदलने पर चलता है और localStorage.setItem(key, JSON.stringify(value)) को कॉल करता है।

निर्भरता सारणी में मान रखने से स्थिति में होने वाला हर बदलाव अपने-आप भंडारण में लिख दिया जाता है।

फ़ंक्शनल अपडेट पुराने क्लोज़र से बचाते हैं

जब पिछली मान के आधार पर मान सेट करना हो, तो फ़ंक्शनल रूप setValue(prev => prev + 1) का उपयोग करें। इससे पुराने क्लोज़र की समस्या नहीं होती, जिसमें पहले कैप्चर किया गया मान लिखा जा सकता था।

यह उन इवेंट हैंडलर और इफ़ेक्ट के भीतर विशेष रूप से महत्वपूर्ण है, जो पुरानी स्थिति की प्रति कैप्चर कर सकते हैं।

शून्य संग्रहीत मान को सँभालना

जब कुंजी मौजूद नहीं होती, तो getItem null लौटाता है। आपके आरंभीकरण फ़ंक्शन को इसका पता लगाकर null को पार्स करने के बजाय डिफ़ॉल्ट मान पर लौटना चाहिए।

stored != null ? JSON.parse(stored) : defaultValue जैसा सुरक्षा-जाँच तरीका पहली बार आने वाले उपयोगकर्ता को सहज अनुभव देता है।

TypeScript के जेनेरिक प्रकार

TypeScript में आप हुक को जेनेरिक बना सकते हैं: function useLocalStorage<T>(key: string, initial: T)। इससे मान का प्रकार सुरक्षित रहता है और इसका उपयोग करने वाले को पूरा प्रकार-सुरक्षा लाभ मिलता है।

लौटने वाले युग्म का प्रकार [T, Dispatch<SetStateAction<T>>] होता है, जो useState से मेल खाता है।

संग्रहीत डेटा का संस्करण प्रबंधन

समय के साथ आपके डेटा की संरचना बदलती है और पुराने सहेजे गए मान नए कोड को बाधित कर सकते हैं। डेटा के साथ एक संस्करण कुंजी भी सहेजें, ताकि पुराने प्रारूपों का पता लगाया जा सके।

उदाहरण के लिए, { संस्करण: 2, डेटा } सहेजें और पढ़ते समय संस्करण की तुलना करें।

संस्करण न मिलने पर डेटा हटाना

जब सहेजा गया संस्करण वर्तमान संस्करण से मेल न खाए, तो पुराने मान पर भरोसा करने के बजाय उसे हटा दें या नए प्रारूप में बदल दें। सबसे सरल तरीका है कि पुराने प्रविष्टि को हटा दें और डिफ़ॉल्ट मानों पर लौट आएँ।

इससे आपके ऐप के पुराने संस्करण द्वारा लिखे गए डेटा से होने वाली त्रुटियाँ रुकती हैं।

हुक को एक साथ जोड़ना

एक पूरा useLocalStorage आलसी आरंभीकरण फ़ंक्शन को जोड़ता है, जो सुरक्षित रूप से पढ़ता और पार्स करता है; ऐसा सेट करने वाला फ़ंक्शन, जो फ़ंक्शनल अपडेट का समर्थन करता है; और एक useEffect, जो संस्करण प्रबंधन के साथ भंडारण में लिखता है।

इसका परिणाम useState का ऐसा विकल्प है जिसे सीधे इस्तेमाल किया जा सकता है और जो पुनः लोड के बाद भी बना रहता है।

त्वरित जाँच

स्थिति के आरंभीकरण के बारे में अपनी समझ की जाँच करें।

पुनरावलोकन

आपने आलसी आरंभीकरण फ़ंक्शन वाला useLocalStorage हुक बनाना, useEffect के माध्यम से बदलावों को स्थायी रूप से सहेजना, पुराने क्लोज़र से बचने के लिए फ़ंक्शनल अपडेट का उपयोग करना और null मानों को सँभालना सीखा।

आपने TypeScript के जेनेरिक प्रकार और पुराने डेटा को सुरक्षित रूप से हटाने के लिए संस्करण प्रबंधन भी देखा।

शुरुआत निःशुल्क

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

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

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

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

क्या “स्थिति को localStorage के साथ समन्वयित करना” पाठ निःशुल्क है?

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

“स्थिति को localStorage के साथ समन्वयित करना” में मैं क्या सीखूँगा?

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

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

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

“स्थिति को localStorage के साथ समन्वयित करना” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

  1. React में localStorage पढ़ना और लिखना
  2. स्थिति को localStorage के साथ समन्वयित करना
  3. टैब के बीच संग्रहण घटनाएँ संभालना
  4. sessionStorage, IndexedDB और सही API चुनना
← React Academy पर वापस जाएँ