प्रतिक्रियाशील मूल का उपयोग करते समय डेटा संग्रहीत करने के लिए मेरे विकल्प क्या हैं? (iOS और Android) [बंद]


230

मैं अभी भी रिएक्टिव नेटिव दुनिया में नया हूँ, और आम तौर पर मोबाइल / देशी दुनिया में भी, और जब डेटा की दृढ़ता की बात आती है, तो मुझे प्रलेखन में थोड़ी कमी महसूस होती है।

प्रतिक्रियाशील मूल में डेटा संग्रहीत करने और प्रत्येक प्रकार के निहितार्थ के लिए मेरे विकल्प क्या हैं? उदाहरण के लिए, मैं देख रहा हूं कि स्थानीय भंडारण और एसिंक्स स्टोरेज है, लेकिन फिर मुझे रियलम जैसी चीजें भी दिखाई देती हैं, और मुझे भ्रम है कि यह सब बाहर के डेटाबेस के साथ कैसे काम करेगा।

मैं विशेष रूप से जानना चाहता हूं:

  • डेटा दृढ़ता के लिए विभिन्न विकल्प क्या हैं?
  • प्रत्येक के लिए, उस दृढ़ता की सीमाएं क्या हैं (यानी, डेटा अब उपलब्ध नहीं है)? उदाहरण के लिए: एप्लिकेशन को बंद करते समय, फोन को पुनरारंभ करना, आदि।
  • प्रत्येक के लिए, आईओएस बनाम एंड्रॉइड में लागू करने के बीच अंतर (सामान्य सेटअप के अलावा) हैं?
  • डेटा को ऑफ़लाइन एक्सेस करने के लिए विकल्पों की तुलना कैसे करें? (या ऑफ़लाइन पहुंच आमतौर पर कैसे नियंत्रित की जाती है?)
  • क्या कोई अन्य विचार हैं जिन्हें मुझे ध्यान में रखना चाहिए?

आपकी सहायताके लिए धन्यवाद!


यदि आप संवेदी डेटा संग्रहीत करना चाहते हैं, तो आप इस पर एक नज़र डाल सकते हैं: stackoverflow.com/questions/45547657/…
जुलिएन कोड

सिर्फ दायरे का स्पष्ट रूप से उपयोग करें
फेटी

यदि आप एक सरल समाधान चाहते हैं, तो बस back4app का उपयोग करें (यानी, parse.com)
फेटी

15
जैसा कि अक्सर एसओ पर होता है, ऐसे प्रश्न जो बड़ी संख्या में लोगों के लिए उपयोगी होते हैं, किसी के द्वारा बंद किए जाते हैं ... शायद यह एसओ समुदाय को 'नियमों' के बारे में कुछ बता रहा हो और उन्हें कैसे लागू किया जाए? सभी समय के सबसे अधिक उपयोग किए जाने वाले पोस्टों को देखने का प्रयास करें और देखें कि कितने 'नियमों का पालन करें'। कोई सुन रहा है?
user2330237

जवाबों:


286

यहां मैंने जो कुछ सीखा है, वह अपने वर्तमान एप्लिकेशन प्रोजेक्ट के एक जोड़े के साथ आगे बढ़ने का सबसे अच्छा तरीका निर्धारित करता है।

Async स्टोरेज ("मूल निवासी को प्रतिक्रिया के लिए" "अंतर्निहित")

मैं इन-प्रोडक्शन ऐप के लिए AsyncStorage का उपयोग करता हूं। स्टोरेज डिवाइस के लिए स्थानीय रहता है, अनएन्क्रिप्टेड (जैसा कि दूसरे उत्तर में बताया गया है) है, अगर आप ऐप को हटाते हैं, तो दूर चला जाता है, लेकिन आपके डिवाइस के बैकअप के भाग के रूप में सहेजा जाना चाहिए और अपग्रेड के दौरान बनी रहती है (दोनों मूल उन्नयन ala TestFlight और कोड उन्नयन CodePush के माध्यम से )।

निष्कर्ष: स्थानीय भंडारण; आप अपना खुद का सिंक / बैकअप समाधान प्रदान करते हैं।

SQLite

मैंने जिन अन्य परियोजनाओं पर काम किया है, उन्होंने ऐप स्टोरेज के लिए sqlite3 का उपयोग किया है। यह आपको एसक्यूएल जैसा अनुभव देता है, जिसमें कंप्रेसेबल डेटाबेस होते हैं जिन्हें डिवाइस से और उससे भी ट्रांसमिट किया जा सकता है। मेरे पास उन्हें पीछे के छोर के साथ समन्वयित करने का कोई अनुभव नहीं था, लेकिन मुझे लगता है कि विभिन्न पुस्तकालय मौजूद हैं। SQLite से कनेक्ट करने के लिए RN लाइब्रेरी हैं।

डेटा को आपके पारंपरिक डेटाबेस प्रारूप में डेटाबेस, टेबल, चाबियाँ, सूचकांक आदि के साथ संग्रहीत किया जाता है, जो सभी को एक बाइनरी प्रारूप में डिस्क पर सहेजा जाता है। डेटा तक सीधी पहुंच कमांड लाइन या उन ऐप्स के माध्यम से उपलब्ध है जिनमें SQLite ड्राइवर हैं।

निष्कर्ष: स्थानीय भंडारण; आप सिंक और बैकअप की आपूर्ति करते हैं।

Firebase

अन्य चीजों के अलावा, एक JSON दस्तावेज़ स्टोर (जैसे MongoDB) के साथ एक वास्तविक समय noSQL डेटाबेस के साथ Firebase ऑफ़र, ग्राहकों की संख्या को 1 से n तक सिंक्रनाइज़ रखने के लिए है। डॉक्स ऑफ़लाइन दृढ़ता के बारे में बात करते हैं, लेकिन केवल मूल कोड (स्विफ्ट / ओबज-सी, जावा) के लिए। Google का स्वयं का जावास्क्रिप्ट विकल्प ("वेब") जो कि रिएक्ट नेटिव द्वारा उपयोग किया जाता है, कैश्ड स्टोरेज विकल्प प्रदान नहीं करता है (नीचे 2/18 अपडेट देखें)। पुस्तकालय को इस धारणा के साथ लिखा गया है कि एक वेब ब्राउज़र कनेक्ट होने जा रहा है, और इसलिए एक अर्ध-स्थायी कनेक्शन होगा। आप शायद फायरबेस स्टोरेज कॉल्स के पूरक के लिए एक स्थानीय कैशिंग तंत्र लिख सकते हैं, या आप देशी पुस्तकालयों और रिएक्ट नेटिव के बीच एक पुल लिख सकते हैं।

अद्यतन 2/2018 मैंने पाया के बाद से है प्रतिक्रिया मूल निवासी Firebase जो देशी iOS और Android के पुस्तकालयों के लिए एक संगत जावास्क्रिप्ट इंटरफेस प्रदान करता है (क्या गूगल शायद / किया जाना चाहिए सकता है), तो आप प्रतिक्रिया के बोनस के साथ देशी पुस्तकालयों के सभी उपहार दे रही है मूल समर्थन। वास्तविक समय डेटाबेस के बगल में एक JSON दस्तावेज़ स्टोर के Google की शुरुआत के साथ, मैं कुछ वास्तविक समय के उन ऐप्स के लिए फायरबेज़ को एक अच्छा दूसरा रूप दे रहा हूं जिन्हें मैं बनाने की योजना बना रहा हूं।

रियल-टाइम डेटाबेस को JSON जैसे पेड़ के रूप में संग्रहीत किया जाता है जिसे आप वेबसाइट पर संपादित कर सकते हैं और बहुत ही सरलता से आयात / निर्यात कर सकते हैं।

निष्कर्ष: प्रतिक्रिया-मूल-फायरबेस के साथ, आरएन को स्विफ्ट और जावा के समान लाभ मिलते हैं। [/ अद्यतन] नेटवर्क से जुड़े उपकरणों के लिए अच्छी तरह से तराजू। कम उपयोग के लिए कम लागत। अन्य Google क्लाउड ऑफ़र के साथ अच्छी तरह से संयोजित करता है। डेटा उनके इंटरफ़ेस से आसानी से दिखाई और संपादन योग्य है।

क्षेत्र

अपडेट 4/2020 MongoDB ने दायरे को हासिल कर लिया है और इसे MongoDB Stitch (नीचे चर्चा की गई) के साथ संयोजित करने की योजना बना रहा है। यह बहुत रोमांचक लगता है


साथ ही एक वास्तविक समय ऑब्जेक्ट स्टोर जिसमें ऑटोमैजिक नेटवर्क सिंक्रोनाइज़ेशन हो। वे खुद को "डिवाइस पहले" के रूप में बताते हैं और डेमो वीडियो दिखाता है कि कैसे उपकरण छिटपुट या हानिपूर्ण नेटवर्क कनेक्टिविटी को संभालते हैं।

वे ऑब्जेक्ट स्टोर का एक नि: शुल्क संस्करण प्रदान करते हैं जिसे आप अपने स्वयं के सर्वर पर या एडब्ल्यूएस या एज़्योर जैसे क्लाउड समाधान में होस्ट करते हैं। आप इन-मेमोरी स्टोर भी बना सकते हैं जो डिवाइस, डिवाइस-ओनली स्टोर्स के साथ नहीं बने रहते हैं, जो सर्वर, रीड-ओनली सर्वर स्टोर्स, और एक या अधिक डिवाइसेज़ में सिंक्रोनाइज़ेशन के लिए पूर्ण रीड-राइट विकल्प के साथ सिंक नहीं करते हैं। उनके पास पेशेवर और उद्यम विकल्प हैं जो फायरबेस की तुलना में प्रति माह अधिक खर्च करते हैं।

फायरबेस के विपरीत, सभी रियलिटी क्षमताओं को रिएक्ट नेटिव और ज़ैमरीन में समर्थन दिया जाता है, जैसे कि वे स्विफ्ट / ओबजैक / जावा (देशी) ऐप में हैं।

आपका डेटा आपके कोड में ऑब्जेक्ट्स से बंधा हुआ है। क्योंकि वे परिभाषित वस्तुएं हैं, आपके पास एक स्कीमा है, और कोड नियंत्रण कोड पवित्रता के लिए आवश्यक है। सीधी पहुंच जीयूआई उपकरण के माध्यम से उपलब्ध है। ऑन-डिवाइस डेटा फाइलें क्रॉस-प्लेटफॉर्म संगत हैं।

निष्कर्ष: डिवाइस पहले, मुफ्त और सशुल्क योजनाओं के साथ वैकल्पिक सिंक्रनाइज़ेशन। सभी सुविधाएँ रिएक्टिव नेटिव में समर्थित हैं। फायरबेस की तुलना में क्षैतिज स्केलिंग अधिक महंगा है।

iCloud

मैंने ईमानदारी से इस एक के साथ बहुत खेल नहीं किया है, लेकिन निकट भविष्य में ऐसा करूंगा।

यदि आपके पास एक मूल ऐप है जो CloudKit का उपयोग करता है, तो आप अपने ऐप के कंटेनरों को एक वेब ऐप (या हमारे मामले में, React Native) से कनेक्ट करने के लिए CloudKit JS का उपयोग कर सकते हैं। इस परिदृश्य में, आपके पास संभवतः एक मूल iOS ऐप और एक प्रतिक्रियाशील मूल निवासी Android ऐप होगा।

दायरे की तरह, यह डेटा को स्थानीय रूप से संग्रहीत करता है और संभव होने पर इसे iCloud में सिंक करता है। आपके ऐप के लिए सार्वजनिक स्टोर और प्रत्येक ग्राहक के लिए निजी स्टोर हैं। ग्राहक अपने स्टोर या ऑब्जेक्ट को अन्य उपयोगकर्ताओं के साथ साझा करने के लिए भी चुन सकते हैं।

मुझे नहीं पता कि कच्चे डेटा तक पहुंचना कितना आसान है; स्कीमा एप्पल की साइट पर स्थापित किया जा सकता है।

निष्कर्ष: Apple- लक्षित ऐप्स के लिए बढ़िया।

काउचबेस

बड़ा नाम, इसके पीछे बहुत सारी बड़ी कंपनियां। मानक समर्थन लागत के साथ एक सामुदायिक संस्करण और एंटरप्राइज़ संस्करण है।

रिएक्ट नेटिव तक चीजों को हुक करने के लिए उन्हें अपनी साइट पर एक ट्यूटोरियल मिला है। मैंने भी इस पर अधिक समय नहीं बिताया है, लेकिन यह कार्यक्षमता के मामले में दायरे के लिए एक व्यवहार्य विकल्प प्रतीत होता है। मुझे नहीं पता कि आपके ऐप या आपके द्वारा बनाए गए किसी भी एपीआई के बाहर आपके डेटा को प्राप्त करना कितना आसान है।

[संपादित करें: एक पुराना लिंक मिला जो Couchbase और CouchDB के बारे में बात करता है, और CouchDB विचार करने के लिए एक और विकल्प हो सकता है। दोनों ऐतिहासिक रूप से संबंधित हैं, लेकिन वर्तमान में पूरी तरह से अलग उत्पाद हैं। यह तुलना देखें ।]

निष्कर्ष: लगता है कि दायरे के समान क्षमता है। डिवाइस-ओनली या सिंक किया जा सकता है। मुझे इसे आज़माने की ज़रूरत है।

MongoDB

अपडेट 4/2020

Mongo ने Realm का अधिग्रहण किया और MongoDB Stitch (नीचे चर्चा की गई) को Realm (ऊपर चर्चा की गई) के साथ संयोजित करने की योजना बनाई


मैं इस सर्वर साइड का उपयोग ऐप के एक टुकड़े के लिए कर रहा हूं जो स्थानीय रूप से AsyncStorage का उपयोग करता है। मुझे पसंद है कि सब कुछ JSON ऑब्जेक्ट्स के रूप में संग्रहीत किया जाता है, जिससे क्लाइंट डिवाइसों को बहुत सीधा प्रसारण होता है। मेरे उपयोग के मामले में, यह टीवी गाइड डेटा और मेरे ग्राहक उपकरणों के अपस्ट्रीम प्रदाता के बीच कैश के रूप में उपयोग किया जाता है।

स्कीमा की तरह डेटा के लिए कोई कठिन संरचना नहीं है, इसलिए प्रत्येक ऑब्जेक्ट को "दस्तावेज़" के रूप में संग्रहीत किया जाता है जो आसानी से खोजा जा सकता है, फ़िल्टर करने योग्य, आदि। इसी तरह की JSON ऑब्जेक्ट्स में अतिरिक्त (लेकिन अलग-अलग) विशेषताएँ या चाइल्ड ऑब्जेक्ट हो सकते हैं, जो एक के लिए अनुमति देता है आप अपनी वस्तुओं / डेटा की संरचना में बहुत लचीलापन रखते हैं।

मैंने सर्वर सिंक्रनाइज़ेशन सुविधाओं के लिए किसी भी क्लाइंट की कोशिश नहीं की है, न ही मैंने इसे एम्बेडेड का उपयोग किया है। MongoDB के लिए प्रतिक्रिया मूल कोड मौजूद है।

निष्कर्ष: स्थानीय केवल NoSQL समाधान, Realm या Firebase जैसा कोई स्पष्ट सिंक विकल्प नहीं।

2/2019 अपडेट करें

MongoDB में एक "उत्पाद" (या सेवा) है जिसे स्टिच कहा जाता है। चूंकि क्लाइंट (वेब ​​ब्राउज़र और फोन के अर्थ में) सीधे MongoDB से बात नहीं करनी चाहिए (जो कि आपके सर्वर पर कोड द्वारा की जाती है), उन्होंने एक सर्वर रहित फ्रंट-एंड बनाया, जिसके साथ आपके ऐप्स इंटरफ़ेस कर सकते हैं, क्या आपको उनका उपयोग करने का चयन करना चाहिए होस्टेड समाधान (एटलस)। उनका प्रलेखन यह प्रकट करता है कि एक संभावित सिंक विकल्प है।

दिसंबर 2018 से यह राइटअप एक नमूना ऐप में रिएक्ट मूल निवासी, सिलाई और MongoDB का उपयोग करके चर्चा करता है, दस्तावेज़ में अन्य नमूने जुड़े हुए हैं ( https://www.mongodb.com/blog/post/building-ios-and-android-apps) -साथ-मोंगोडब-सिलाई-प्रतिक्रिया-देशी-एसडीके )।

ट्विलियो सिंक

तुल्यकालन के लिए एक और NoSQL विकल्प ट्वाइलियो का सिंक है। उनकी साइट से: "सिंक आपको किसी भी बैकएंड इन्फ्रास्ट्रक्चर को संभालने के बिना वास्तविक समय में किसी भी संख्या में उपकरणों के राज्य का प्रबंधन करने देता है।"

मैंने इसे पूर्वोक्त परियोजनाओं में से एक के लिए फायरबेस के विकल्प के रूप में देखा, खासकर दोनों टीमों से बात करने के बाद। मुझे उनके अन्य संचार उपकरण भी पसंद हैं, और उन्हें सरल वेब ऐप से अपडेट करने के लिए उपयोग किया है।


[संपादित करें] मैंने रियलम के साथ कुछ समय बिताया है क्योंकि मैंने मूल रूप से यह लिखा था। मुझे पसंद है कि मुझे Firebase के समान ऐप और सर्वर के बीच डेटा को सिंक करने के लिए API कैसे लिखना है। सर्वरलेस फ़ंक्शंस भी इन दोनों के साथ वास्तव में मददगार लगते हैं, मुझे जो बैकएंड कोड लिखना है, उसे सीमित करना होगा।

मुझे MongoDB डेटा स्टोर का लचीलापन पसंद है, इसलिए यह वेब-आधारित और अन्य कनेक्शन-आवश्यक ऐप्स के सर्वर पक्ष के लिए मेरी पसंद बन रहा है।

मुझे RESTHeart मिला , जो MongoDB के लिए एक बहुत ही सरल, स्केलेबल RESTful API बनाता है। एक रिएक्ट (मूल) घटक का निर्माण करना बहुत कठिन नहीं होना चाहिए, जो JSON ऑब्जेक्ट्स को RESTHeart को पढ़ता और लिखता है, जो बदले में उन्हें / MongoDB से पास करता है।


[संपादित करें] मैंने जानकारी जोड़ी है कि डेटा कैसे संग्रहीत किया जाता है। कभी-कभी यह जानना महत्वपूर्ण है कि यदि आपने डेटा को ट्वीक और परीक्षण करने के लिए प्राप्त किया है, तो विकास और परीक्षण के दौरान आप कितना काम कर सकते हैं।


संपादन 2/2019 मैंने पिछले साल (2018) में एक उच्च-संगामिति परियोजना को डिजाइन करते समय इनमें से कई विकल्पों के साथ प्रयोग किया। उनमें से कुछ ने अपने प्रलेखन में कठिन और नरम संगामिति सीमाओं का उल्लेख किया है (फायरबेस में 10,000 कनेक्शन पर एक कठिन था, मुझे विश्वास है, जबकि ट्विलियो की एक नरम सीमा थी जिसे AltConf में दोनों टीमों के साथ चर्चा के अनुसार टकराया जा सकता था)।

यदि आप दसियों हज़ारों उपयोगकर्ताओं के लिए एक ऐप डिज़ाइन कर रहे हैं, तो तदनुसार डेटा बैकेंड को स्केल करने के लिए तैयार रहें।


1
अच्छी तरह से Redux के बारे में क्या?
HIRA THAKUR

4
@LeardoardoDaCodinchi Redux राज्य प्रबंधन के लिए सहायक होगा, लेकिन कोई निरंतर भंडारण कार्यक्षमता प्रदान नहीं करता है।
वॉल्शी 4

1
आपकी सूची में क्यों नहीं redux-persistent? क्या आप कृपया इसके बारे में कुछ जोड़ सकते हैं? अगर यह बुरा है।
शहजाद मिर्ज़ा

जब मैंने यह लिखा था, तो मैंने Redux से संबंधित किसी भी चीज़ को देखने में कोई समय नहीं बिताया था। मेरे मौजूदा रिएक्ट और रिएक्ट-नेटिव ऐप्स (जो अब लगभग दो साल पुराने हैं और केवल रखरखाव मोड में हैं) इसका उपयोग नहीं करते हैं। शायद भविष्य के प्रोजेक्ट में यह सामने आएगा, जिस बिंदु पर मैं कुछ उचित टिप्पणी पेश कर सकता हूं।
ब्रायन स्कॉट

1
मैं उस तरह से प्यार करता था जिस तरह से आपने सब कुछ किया। यह बेहतर होगा यदि आप उनमें से प्रत्येक के लिए पेशेवरों और विपक्षों को जोड़ते हैं (यह दस्तावेजों का लिंक भी है)। जैसे मुझे पता चला AsyncStorageकि एंड्रॉइड में केवल 6 एमबी का समर्थन है, जबकि आईओएस के लिए ऐसी कोई सीमा नहीं है।
जिमित पटेल

58

त्वरित और गंदा: प्रतिक्रिया-मूल के लिए बस Redux + प्रतिक्रिया-redux + redux-persist + AsyncStorage का उपयोग करें

यह लगभग पूरी तरह से प्रतिक्रिया देशी दुनिया में फिट बैठता है और एंड्रॉइड और आईओएस दोनों के लिए एक आकर्षण की तरह काम करता है। इसके अलावा, इसके चारों ओर एक ठोस समुदाय है, और बहुत सारी जानकारी है।

एक कामकाजी उदाहरण के लिए, फेसबुक से F8App देखें ।

डेटा दृढ़ता के लिए विभिन्न विकल्प क्या हैं?

मूल निवासी के साथ, आप शायद redux और redux-persist का उपयोग करना चाहते हैं। यह कई स्टोरेज इंजन का उपयोग कर सकता है। AsyncStorage और redux-persist-filesystem-storage आरएन के लिए विकल्प हैं।

फायरबेस या रियलम जैसे अन्य विकल्प हैं, लेकिन मैंने कभी आरएन प्रोजेक्ट पर उन का उपयोग नहीं किया।

प्रत्येक के लिए, उस दृढ़ता की सीमाएं क्या हैं (यानी, डेटा अब उपलब्ध नहीं है)? उदाहरण के लिए: एप्लिकेशन को बंद करते समय, फोन को पुनरारंभ करना, आदि।

Redux + redux-persist का उपयोग करके आप परिभाषित कर सकते हैं कि क्या जारी है और क्या नहीं है। जब निरंतर नहीं रहता है, तो एप्लिकेशन मौजूद होने के दौरान डेटा मौजूद रहता है। जब जारी रखा जाता है, तो डेटा एप्लिकेशन निष्पादन (बंद, खुला, पुनरारंभ फोन, आदि) के बीच रहता है।

Android पर AsyncStorage की 6MB की डिफ़ॉल्ट सीमा है। एंड्रॉइड के लिए भंडारण इंजन के रूप में एक बड़ी सीमा (जावा कोड पर) को कॉन्फ़िगर करना या Redux-persist-filesystem-storage का उपयोग करना संभव है।

प्रत्येक के लिए, आईओएस बनाम एंड्रॉइड में लागू करने के बीच अंतर (सामान्य सेटअप के अलावा) हैं?

Redux + redux-persist + AsyncStorage का उपयोग करना सेटअप Android और iOS पर बिल्कुल समान है।

डेटा को ऑफ़लाइन एक्सेस करने के लिए विकल्पों की तुलना कैसे करें? (या ऑफ़लाइन पहुंच आमतौर पर कैसे नियंत्रित की जाती है?)

Redux का उपयोग करते हुए, इसके डिज़ाइन भागों (एक्शन क्रिएटर्स और रिड्यूसर) के लिए ऑफ़लाइन पहुंच लगभग स्वचालित है।

आपके द्वारा लाए गए और संग्रहीत सभी डेटा उपलब्ध हैं, आप आसानी से राज्य (लाने, सफलता, त्रुटि) और उस समय का संकेत देने के लिए अतिरिक्त डेटा संग्रहीत कर सकते हैं। आम तौर पर, एक भ्रूण का अनुरोध पुराने डेटा और आपके घटकों को अमान्य नहीं करता है जब नया डेटा प्राप्त होता है।

दूसरी दिशा में भी यही बात लागू होती है। आप अपने द्वारा भेजे जा रहे डेटा को स्टोर कर सकते हैं और जो अभी भी लंबित हैं और उसी के अनुसार संभाल सकते हैं।

क्या कोई अन्य विचार हैं जिन्हें मुझे ध्यान में रखना चाहिए?

रिएक्ट ऐप बनाने का एक प्रतिक्रियात्मक तरीका बढ़ावा देता है और Redux उस पर बहुत अच्छी तरह से फिट बैठता है। आपको अपने नियमित Android या iOS ऐप में उपयोग किए जाने वाले विकल्प का उपयोग करने से पहले इसे आज़माना चाहिए। इसके अलावा, आपको बहुत अधिक डॉक्स मिलेंगे और उन लोगों के लिए मदद मिलेगी।


3
AsyncStorage / Redux Persist पर गहरे गोता लगाने के लिए धन्यवाद। मैं सभी विकल्पों के अवलोकन के लिए और अधिक देख रहा था, इसलिए केवल यही कारण है कि मैंने आधिकारिक उत्तर के रूप में इसे नहीं चुना।
सिया

9

ऊपर के फ़ोकस ने स्टोरेज के लिए सही नोट्स को हिट किया, हालाँकि यदि आपको किसी भी PII डेटा पर विचार करने की आवश्यकता है जिसे संग्रहीत करने की आवश्यकता है, तो आप https://github.com/oblador/react-native-key-in जैसे कुछ का उपयोग करके किचेन में स्टैश कर सकते हैं। चूंकि ASyncStorage अनएन्क्रिप्टेड है। यह रिडक्स-फ़िस्टिस्ट जैसी किसी चीज़ में दृढ़ता कॉन्फ़िगरेशन के भाग के रूप में लागू किया जा सकता है।


1

आप सिंक स्टोरेज का उपयोग कर सकते हैं जो कि async स्टोरेज की तुलना में उपयोग करना आसान है। यह पुस्तकालय महान है जो एसिंक्रोनस रूप से डेटा को असिंक्रोनस रूप से सहेजने के लिए उपयोग करता है और डेटा को तुरंत सिंक्रनाइज़ करने के लिए लोड करने और सहेजने के लिए मेमोरी का उपयोग करता है, इसलिए हम डेटा एसिंक्स को मेमोरी में और ऐप सिंक में उपयोग करने के लिए सहेजते हैं, इसलिए यह बहुत अच्छा है।

import SyncStorage from 'sync-storage';

SyncStorage.set('foo', 'bar');
const result = SyncStorage.get('foo');
console.log(result); // 'bar'

1

यदि आप जटिल डेटा प्रकार का प्रबंधन करना चाहते हैं तो आप Realm या Sqlite का उपयोग कर सकते हैं।

अन्यथा इनबिल्ट के साथ जाएं देशी एसेंस्टॉरेज प्रतिक्रिया करते हैं


0

हमें Redux-persist की जरूरत नहीं है, हम केवल दृढ़ता के लिए redux का उपयोग कर सकते हैं।

प्रतिक्रिया-redux + AsyncStorage = redux-persist

तो अंदर createotre फ़ाइल बस इन लाइनों को जोड़ने

store.subscribe(async()=> await AsyncStorage.setItem("store", JSON.stringify(store.getState())))

जब भी Redux स्टोर में कुछ बदलाव होंगे, यह AsyncStorage को अद्यतन करेगा।

फिर json परिवर्तित स्टोर लोड करें। जब कभी ऐप लोड होता है। और दुकान को फिर से सेट करें।

क्योंकि wix प्रतिक्रिया-मूल-नेविगेशन का उपयोग करते समय Redux-persist मुद्दे बनाता है। अगर ऐसा है तो मैं सब्सक्राइबर फंक्शन के साथ सिंपल रेडक्स का इस्तेमाल करना पसंद करता हूं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.