restate / v1.0.0
वारंवार विचारले जाणारे प्रश्न
restate मधील रेंडरिंग, सेव्ह, scope आणि त्रुटींबद्दल सर्वात सामान्य प्रश्नांची उत्तरे.
जुळणारे प्रश्न नाहीत
दुसरा शब्द वापरून पाहा किंवा सर्व प्रश्न दाखवा.
मूलभूतमला Provider लागतो का?
नाही. स्टोअर हे मॉड्यूल स्तरावरील मूल्य आहे; ते import करणारा कोणताही कंपोनंट ते वापरू शकतो. स्टेट एका कंपोनंट इन्स्टन्सच्या मालकीचे हवे असल्यास 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 वर.
त्रुटी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 च्या इनिशियलायझरप्रमाणे एकदाच चालते. प्रत्येक नवीन दस्तऐवजाला नवीन scope मिळण्यासाठी कंपोनंट प्रति-दस्तऐवज key सह रेंडर करा.
Scopehydration विसंगती कशी टाळावी?
सर्व्हर आणि क्लायंटवर तोच सर्व्हर डेटा props म्हणून पाठवा आणि useRestateScope मध्ये त्यातून स्टोअर तयार करा. सुरुवातीचे मूल्य सर्व्हर स्नॅपशॉट बनते.
Scopeमाझा scope स्टोअर restateManager.ready मध्ये का नाही?
scope मधील सेव्ह होणारे स्टोअर मालक कंपोनंट क्लायंटवर commit झाल्यावर लोड सुरू करतात. त्या कंपोनंटमध्ये लोडिंग सीमेमध्ये scope.manager.ready ची वाट पाहा.
सेव्हReact Native वर MMKV_UNAVAILABLE.
react-native-mmkv आणि त्याची नेटिव्ह अवलंबित्वे इन्स्टॉल करा, मग ॲप पुन्हा build करा. Expo मध्ये development build वापरा. मेमरी स्टोअर MMKV शिवायही चालतात.