restate / v1.0.0
الأسئلة الشائعة
إجابات عن أكثر الأسئلة شيوعًا حول العرض والحفظ والنطاقات والأخطاء في restate.
لا توجد أسئلة مطابقة
جرّب كلمة أخرى أو اعرض كل الأسئلة.
الأساسياتهل أحتاج إلى 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() حين يقرّر المستخدم، كزر حفظ أو إرسال نموذج. ويمكنك استدعاء save() حتى مع تفعيل autoSave، مثلًا عند pagehide.
الأخطاءرُفض restateManager.ready. ماذا الآن؟
يُرفض بـ BULK_OPERATION_FAILED حين يتعذّر قراءة سجل أو ترحيله أو التحقق منه. يسرد error.failures كل مخزن وخطأه. أصلح السجل أو امسحه، واستدعِ initialize() لذلك المخزن، ثم اقرأ ready مجددًا.
الأخطاءأرى QUEUE_FULL أو STORAGE_TIMEOUT.
التخزين أبطأ من العمل الذي تضعه في الطابور. تجنّب استدعاء save() في حلقة متقاربة — فالحفظ المنتظر يأخذ أحدث قيمة أصلًا — أو استخدم autoSave مع انتظار. واضبط maxPendingOperations وoperationTimeoutMs عند الحاجة.
الأخطاءطلب متأخر يكتب في مخزن بعد الإزالة.
يُتجاهل set() وreset() على مخزن مُتلَف، كتحديث حالة React بعد الإزالة. ويطرح الاشتراك STORE_DESTROYED، وتُرفض أوامر التخزين.
النطاقاتمخزني ذو النطاق يتجاهل props الجديدة.
تعمل دالة المصنع مرة واحدة، كمُهيّئ useState. اعرض المكوّن مع key لكل مستند، ليحصل كل مستند جديد على نطاق جديد.
النطاقاتكيف أتجنّب عدم تطابق الإماهة؟
مرّر بيانات الخادم نفسها كـ props على الخادم والعميل، وأنشئ المخزن منها في useRestateScope. تصبح القيمة الأولية لقطة الخادم.
النطاقاتلماذا لا يدخل مخزني ذو النطاق في restateManager.ready؟
تبدأ المخازن المحفوظة في نطاق بالتحميل بعد تثبيت المكوّن المالك على العميل. انتظر scope.manager.ready داخل حدّ تحميل في ذلك المكوّن.
الحفظMMKV_UNAVAILABLE في React Native.
ثبّت react-native-mmkv وتبعياته الأصلية، ثم أعد بناء التطبيق. وفي Expo استخدم development build. تعمل مخازن الذاكرة من دون MMKV.