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తో కాంపోనెంట్ను రెండర్ చేయండి.
Scope-లుhydration అసమతుల్యతను ఎలా నివారించాలి?
సర్వర్లో, క్లయింట్లో అదే సర్వర్ డేటాను propsగా పంపి, useRestateScope-లో దాని నుండి స్టోర్ను సృష్టించండి. ప్రారంభ విలువ సర్వర్ స్నాప్షాట్ అవుతుంది.
Scope-లునా scope స్టోర్ restateManager.ready-లో ఎందుకు లేదు?
scope-లోని సేవ్ అయ్యే స్టోర్లు యజమాని కాంపోనెంట్ క్లయింట్లో commit అయినప్పుడు లోడ్ చేయడం ప్రారంభిస్తాయి. ఆ కాంపోనెంట్లో లోడింగ్ సరిహద్దులో scope.manager.ready కోసం వేచి ఉండండి.
సేవ్React Native-లో MMKV_UNAVAILABLE.
react-native-mmkv, దాని నేటివ్ ఆధారాలను ఇన్స్టాల్ చేసి, యాప్ను మళ్లీ build చేయండి. Expo-లో development build వాడండి. మెమరీ స్టోర్లు MMKV లేకుండా కూడా పనిచేస్తాయి.