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 ছাড়াই কাজ করে।

ডকুমেন্টেশনে খুঁজুন

সব গাইডের শিরোনাম, বিবরণ আর লেখায় খুঁজুন।