restate / v1.0.0

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

restate में रेंडर, सहेजने, scope और त्रुटियों के बारे में सबसे आम सवालों के जवाब।

मूल बातेंक्या मुझे Provider चाहिए?

नहीं। स्टोर मॉड्यूल-स्तर का मान है; उसे इम्पोर्ट करने वाला कोई भी कंपोनेंट उसे इस्तेमाल कर सकता है। जब स्टेट किसी कंपोनेंट इंस्टेंस का होना चाहिए, तो useRestateScope इस्तेमाल करें।

मूल बातेंमेरा कंपोनेंट हर बदलाव पर रेंडर क्यों होता है?

selector के बिना हुक कॉल पूरे मान की सदस्यता लेती है। ऐसा selector दें जो सिर्फ़ वही लौटाए जो कंपोनेंट दिखाता है।

मूल बातेंमेरा selector ऑब्जेक्ट लौटाता है और हर बार रेंडर होता है।

Object.is के अनुसार नया ऑब्जेक्ट कभी पिछले के बराबर नहीं होता। दूसरे आर्ग्युमेंट के रूप में shallow दें या फ़ील्ड अलग-अलग चुनें।

मूल बातेंऑब्जेक्ट बदल गया, पर कुछ अपडेट नहीं हुआ।

set को वही ऑब्जेक्ट मिला, इसलिए restate को बदलाव नहीं दिखा। set से नया ऑब्जेक्ट या ऐरे लौटाएँ।

सहेजनासहेजे गए डेटा का इंतज़ार कहाँ करूँ?

एक बार, क्लाइंट एंट्री पॉइंट में: ऐप रेंडर करने से पहले await restateManager.ready चलाएँ। उसके बाद कंपोनेंट सहेजे गए मान सीधे पढ़ते हैं। useRestateScope के स्टोर अपने scope.manager.ready का इंतज़ार करते हैं।

सहेजनाडेटा स्टोरेज में कब लिखा जाता है?

सिर्फ़ जब आप save() कॉल करें या, autoSave चालू होने पर, बदलावों के बाद। संपादन मेमोरी बदलता है; status().dirty बताता है कि बिना सहेजे बदलाव हैं।

सहेजनाautoSave या save()?

जो सेटिंग और ड्राफ़्ट हमेशा सहेजे जाने चाहिए, उनके लिए autoSave इस्तेमाल करें। जब उपयोगकर्ता तय करे, जैसे सहेजें बटन या फ़ॉर्म सबमिट से, तब save() इस्तेमाल करें। autoSave चालू होने पर भी save() कॉल कर सकते हैं, जैसे pagehide पर।

सहेजनाप्राइवेट विंडो में या SSR के दौरान सहेजना विफल होता है।

स्टोरेज उपलब्ध न होने पर स्टोर मेमोरी में चलता रहता है, status().available false होता है, और save() STORAGE_UNAVAILABLE के साथ अस्वीकार होता है। स्टार्टअप फिर भी सफल होता है।

त्रुटियाँrestateManager.ready अस्वीकार हो गया। अब क्या?

जब कोई रिकॉर्ड पढ़ा, माइग्रेट या सत्यापित न हो सके, तो यह BULK_OPERATION_FAILED के साथ अस्वीकार होता है। error.failures हर स्टोर और उसकी त्रुटि की सूची देता है। रिकॉर्ड ठीक करें या साफ़ करें, उस स्टोर का initialize() कॉल करें और ready को फिर एक्सेस करें।

त्रुटियाँमुझे QUEUE_FULL या STORAGE_TIMEOUT दिखता है।

स्टोरेज आपके कतार में डाले जा रहे काम से धीमा है। तंग लूप में save() कॉल करने से बचें — लंबित सहेजना पहले से नवीनतम मान लेता है — या इंतज़ार वाले autoSave का इस्तेमाल करें। ज़रूरत हो तो maxPendingOperations और operationTimeoutMs बदलें।

त्रुटियाँअनमाउंट के बाद देर से आया अनुरोध स्टोर में लिखता है।

नष्ट स्टोर पर set() और reset() अनदेखे होते हैं, जैसे अनमाउंट के बाद React स्टेट अपडेट। सदस्यता STORE_DESTROYED फेंकती है, और स्टोरेज कमांड अस्वीकार होते हैं।

Scopeमेरा scope वाला स्टोर नए props अनदेखा करता है।

factory एक बार चलती है, useState के इनिशियलाइज़र की तरह। हर दस्तावेज़ के लिए कंपोनेंट को key के साथ रेंडर करें, ताकि हर नए दस्तावेज़ को नया scope मिले।

Scopeहाइड्रेशन मिसमैच से कैसे बचूँ?

सर्वर और क्लाइंट पर वही सर्वर डेटा props के रूप में दें और useRestateScope में उससे स्टोर बनाएँ। शुरुआती मान सर्वर स्नैपशॉट बन जाता है।

Scopeमेरा scope वाला स्टोर restateManager.ready में क्यों नहीं है?

scope के सहेजे गए स्टोर क्लाइंट पर मालिक कंपोनेंट के commit होने पर लोड करना शुरू करते हैं। उस कंपोनेंट में लोडिंग सीमा के भीतर scope.manager.ready का इंतज़ार करें।

सहेजनाReact Native में MMKV_UNAVAILABLE।

react-native-mmkv और उसकी नेटिव निर्भरताएँ इंस्टॉल करें, फिर ऐप दोबारा बिल्ड करें। Expo में development build इस्तेमाल करें। मेमोरी वाले स्टोर MMKV के बिना काम करते हैं।

दस्तावेज़ खोजें

सभी गाइड के शीर्षक, विवरण और सामग्री में खोजें।