الفرق بين المراجعتين ل"ReactNative/asyncstorage"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(رفع المحتوى)
 
ط (مراجعة)
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE:AsyncStorage  في ReactNative}}</noinclude>
 
<noinclude>{{DISPLAYTITLE:AsyncStorage  في ReactNative}}</noinclude>
** مهمل**، استخدم [https://github.com/react-native-async-storage/async-storage <code>async-storage</code>] بدلًا عنه.
+
'''مهمل،''' يمكنك استخدام [https://github.com/react-native-async-storage/async-storage <code>async-storage</code>] بدلًا عنه.
  
<code>AsyncStorage</code> هو نظام تخزين مستمر غير مشفر وغير متزامن، يُخزن البيانات في شكل أزواج <code>(key: value)</code>، وهو نظام موحد لكل أجزاء التطبيق. يجب استعماله بدلًا عن <code>LocalStorage</code>.
+
<code>AsyncStorage</code> هو نظام تخزين مستمر غير مشفّر وغير متزامن، يُخزن البيانات في صورة أزواج <code>(key: value)</code>، وهو نظام موحّد لكلّ أجزاء التطبيق، ويجب استعماله بدلًا عن <code>LocalStorage</code>.
  
يُفضّل استخدام التجريد (abstraction) على مستوى أعلى من <code>AsyncStorage</code> بدلًا من استخدامه على <code>AsyncStorage</code> مباشرة في حالة التخزين الثقيل للبيانات.
+
يُفضّل استخدام التجريد (abstraction) على مستوى أعلى من <code>AsyncStorage</code> بدلًا من استخدامه على <code>AsyncStorage</code> مباشرةً في حالة التخزين الثقيل للبيانات.
  
يدعم نظام iOS نظام التخزين <code>AsyncStorage</code> بواسطة شيفرة أصلية تُخزِّن القيم الصغيرة في قاموس متسلسل، والقيم الكبيرة في ملفات منفصلة. أمّا نظام أندويد فإنّه سيتخدم إمّا <code>RocksDB</code> أو <code>SQLite</code> بناءً على ما هو متاح.
+
يدعم نظام iOS نظام التخزين <code>AsyncStorage</code> بواسطة شيفرة أصلية تُخزِّن القيم الصغيرة في قاموس متسلسل، والقيم الكبيرة في ملفّات منفصلة؛ أمّا نظام أندويد فسيتخدم إمّا <code>RocksDB</code> أو <code>SQLite</code> بناءً على ما هو متاح.
  
شيفرة جافاسكريبت الخاصة بنظام التخزين <code>AsyncStorage</code> توفِّر واجهة برمجة تطبيقات (API) واضحة، وكائنات خطأ (Error Objects)، ودوال غير متعددة. كل دالة في واجهة برمجة التطبيقات (API) تُرجع وعدًا (Promise).
+
شيفرة [[JavaScript|جافاسكريبت]] الخاصة بنظام التخزين <code>AsyncStorage</code> توفِّر واجهة برمجة تطبيقات (API) واضحة، وكائنات خطأ (Error Objects)، ودوال غير متعددة. كلّ دالة في واجهة برمجة التطبيقات (API) تُرجع وعدًا (Promise).
  
 
'''استيراد مكتبة <code>AsyncStorage</code>'''
 
'''استيراد مكتبة <code>AsyncStorage</code>'''
  
<syntaxhighlight class="react">import { AsyncStorage} from 'react-native';</syntaxhighlight>
+
<syntaxhighlight class="react" lang="javascript">import { AsyncStorage} from 'react-native';</syntaxhighlight>
 
'''حفظ البيانات'''
 
'''حفظ البيانات'''
  
<syntaxhighlight class="react">_storeData = async () => {
+
<syntaxhighlight class="react" lang="javascript">_storeData = async () => {
 
   try {
 
   try {
 
     await AsyncStorage.setItem(
 
     await AsyncStorage.setItem(
سطر 27: سطر 27:
 
'''قراءة البيانات'''
 
'''قراءة البيانات'''
  
<syntaxhighlight class="react">_retrieveData = async () => {
+
<syntaxhighlight class="react" lang="javascript">_retrieveData = async () => {
 
   try {
 
   try {
 
     const value = await AsyncStorage.getItem('TASKS');
 
     const value = await AsyncStorage.getItem('TASKS');
سطر 44: سطر 44:
 
=== <code>‎getItem()‎</code> ===
 
=== <code>‎getItem()‎</code> ===
  
<syntaxhighlight class="react">static getItem(key: string, [callback]: ?(error: ?Error, result: ?string) => void)</syntaxhighlight>
+
<syntaxhighlight class="react" lang="javascript">static getItem(key: string, [callback]: ?(error: ?Error, result: ?string) => void)</syntaxhighlight>
تجلب البيانات الخاصة بمفتاح (key) معين وتستدعي رد نداء (callback) بعد إكتمال العملية أو حدوث خطأ أثناء التنفيذ.تُرجع كائن من النوع [https://www.google.com/url?q=https://wiki.hsoub.com/JavaScript/Promise&sa=D&ust=1611306791480000&usg=AOvVaw2elF2z1fPTgS6EQa20AEJ2 <code>promise</code>].
+
تجلب البيانات الخاصة بمفتاح (<code>key</code>) معيّن وتستدعي ردّ نداء (callback). بعد إكتمال العملية أو حدوث خطأ أثناء التنفيذ تُرجع كائن من النوع [https://www.google.com/url?q=https://wiki.hsoub.com/JavaScript/Promise&sa=D&ust=1611306791480000&usg=AOvVaw2elF2z1fPTgS6EQa20AEJ2 <code>promise</code>].
  
 
'''المعاملات'''
 
'''المعاملات'''
سطر 55: سطر 55:
 
! الوصف
 
! الوصف
 
|-
 
|-
| key
+
| <code>key</code>
 
| سلسلة نصية (string)
 
| سلسلة نصية (string)
 
| نعم
 
| نعم
 
| المفتاح الخاص بالبيانات المُراد جلبها.
 
| المفتاح الخاص بالبيانات المُراد جلبها.
 
|-
 
|-
| callback
+
| <code>callback</code>
| ?(error: ?Error, result: ?string) => void
+
| <code>‪?(error: ?Error, result: ?string) => void</code>
 
| لا
 
| لا
 
| دالة تُستدعى عند إكتمال عملية جلب البيانات أو حدوث خطأ أثناء العملية.
 
| دالة تُستدعى عند إكتمال عملية جلب البيانات أو حدوث خطأ أثناء العملية.
 
|}
 
|}
 
 
 
=== <code>‎setItem()‎</code> ===
 
=== <code>‎setItem()‎</code> ===
  
<syntaxhighlight class="react">static setItem(key: string, value: string, [callback]: ?(error: ?Error) => void)</syntaxhighlight>
+
<syntaxhighlight class="react" lang="javascript">static setItem(key: string, value: string, [callback]: ?(error: ?Error) => void)</syntaxhighlight>
تُخزِّن البيانات في شكل زوج (key: value)، وتستدعي دالة بعد إكتمال العملية أو حدوث خطأ أثناء التنفيذ. تُرجع كائن من النوع [https://www.google.com/url?q=https://wiki.hsoub.com/JavaScript/Promise&sa=D&ust=1611306791480000&usg=AOvVaw2elF2z1fPTgS6EQa20AEJ2 <code>promise</code>].
+
تُخزِّن البيانات في صورة زوج (<code>key: value</code>)، وتستدعي دالة بعد إكتمال العملية أو حدوث خطأ أثناء التنفيذ. تُرجع كائن من النوع [https://www.google.com/url?q=https://wiki.hsoub.com/JavaScript/Promise&sa=D&ust=1611306791480000&usg=AOvVaw2elF2z1fPTgS6EQa20AEJ2 <code>promise</code>].
  
 
'''المعاملات'''
 
'''المعاملات'''
سطر 80: سطر 78:
 
! الوصف
 
! الوصف
 
|-
 
|-
| key
+
| <code>key</code>
 
| سلسلة نصية (string)
 
| سلسلة نصية (string)
 
| نعم
 
| نعم
 
| المفتاح الخاص بالعنصر المُراد تخزينه.
 
| المفتاح الخاص بالعنصر المُراد تخزينه.
 
|-
 
|-
| value
+
| <code>value</code>
 
| سلسلة نصية (string)
 
| سلسلة نصية (string)
 
| نعم
 
| نعم
 
| العنصر المراد تخزينه.
 
| العنصر المراد تخزينه.
 
|-
 
|-
| callback
+
| <code>callback</code>
| ?(error: ?Error) => void
+
| <code>?(error: ?Error) => void</code>
 
| لا
 
| لا
 
| دالة تُستدعى عند حدوث خطأ اثناء العملية.
 
| دالة تُستدعى عند حدوث خطأ اثناء العملية.
سطر 98: سطر 96:
 
=== <code>‎removeItem()‎</code> ===
 
=== <code>‎removeItem()‎</code> ===
  
<syntaxhighlight class="react">static removeItem(key: string, [callback]: ?(error: ?Error) => void)</syntaxhighlight>
+
<syntaxhighlight class="react" lang="javascript">static removeItem(key: string, [callback]: ?(error: ?Error) => void)</syntaxhighlight>
 
تحذف العنصر المرتبط بالمفتاح المعين، وتستدعي دالة بعد إكتمال العملية أو حدوث خطأ أثناء التنفيذ. تُرجع كائن من النوع [https://www.google.com/url?q=https://wiki.hsoub.com/JavaScript/Promise&sa=D&ust=1611306791480000&usg=AOvVaw2elF2z1fPTgS6EQa20AEJ2 <code>promise</code>].
 
تحذف العنصر المرتبط بالمفتاح المعين، وتستدعي دالة بعد إكتمال العملية أو حدوث خطأ أثناء التنفيذ. تُرجع كائن من النوع [https://www.google.com/url?q=https://wiki.hsoub.com/JavaScript/Promise&sa=D&ust=1611306791480000&usg=AOvVaw2elF2z1fPTgS6EQa20AEJ2 <code>promise</code>].
  
سطر 107: سطر 105:
 
! الوصف
 
! الوصف
 
|-
 
|-
| key
+
| <code>key</code>
 
| سلسلة نصية (string)
 
| سلسلة نصية (string)
 
| نعم
 
| نعم
 
| المفتاح الخاص بالعنصر المُراد حذفه.
 
| المفتاح الخاص بالعنصر المُراد حذفه.
 
|-
 
|-
| callback
+
| <code>callback</code>
| ?(error: ?Error) => void
+
| <code>‪?(error: ?Error) => void</code>
 
| لا
 
| لا
 
| دالة تُستدعى عند حدوث خطأ اثناء العملية.
 
| دالة تُستدعى عند حدوث خطأ اثناء العملية.
سطر 120: سطر 118:
 
=== <code>mergeItem</code> ===
 
=== <code>mergeItem</code> ===
  
<syntaxhighlight class="react">static mergeItem(key: string, value: string, [callback]: ?(error: ?Error) => void)</syntaxhighlight>
+
<syntaxhighlight class="react" lang="javascript">static mergeItem(key: string, value: string, [callback]: ?(error: ?Error) => void)</syntaxhighlight>
تُحدِّث القيمة المرتبطة معين. ويجب أن يكون المفتاح والقيمة الجديدة في شكل سلسلة JSON. تُرجع كائن من النوع [https://www.google.com/url?q=https://wiki.hsoub.com/JavaScript/Promise&sa=D&ust=1611306791480000&usg=AOvVaw2elF2z1fPTgS6EQa20AEJ2 <code>promise</code>].
+
تُحدِّث القيمة المرتبطة معيّن. ويجب أن يكون المفتاح والقيمة الجديدة في شكل سلسلة JSON. تُرجع كائن من النوع [https://www.google.com/url?q=https://wiki.hsoub.com/JavaScript/Promise&sa=D&ust=1611306791480000&usg=AOvVaw2elF2z1fPTgS6EQa20AEJ2 <code>promise</code>].
  
 
'''المعاملات'''
 
'''المعاملات'''
سطر 131: سطر 129:
 
! الوصف
 
! الوصف
 
|-
 
|-
| key
+
| <code>key</code>
 
| سلسلة نصية (string)
 
| سلسلة نصية (string)
 
| نعم
 
| نعم
 
| المفتاح المُراد تحديث قيمته.
 
| المفتاح المُراد تحديث قيمته.
 
|-
 
|-
| value
+
| <code>value</code>
 
| سلسلة نصية (string)
 
| سلسلة نصية (string)
 
| نعم
 
| نعم
 
| القيمة الجديدة للمفتاح.
 
| القيمة الجديدة للمفتاح.
 
|-
 
|-
| callback
+
| <code>callback</code>
| ?(error: ?Error) => void
+
| <code>‪?(error: ?Error) => void</code>
 
| لا
 
| لا
 
| دالة تُستدعى عند حدوث خطأ اثناء العملية.
 
| دالة تُستدعى عند حدوث خطأ اثناء العملية.
سطر 149: سطر 147:
 
'''مثال'''
 
'''مثال'''
  
<syntaxhighlight class="react">let UID123_object = {
+
<syntaxhighlight class="react" lang="javascript">let UID123_object = {
 
   name: 'Chris',
 
   name: 'Chris',
 
   age: 30,
 
   age: 30,
سطر 179: سطر 177:
 
// => {'name':'Chris','age':31,'traits':
 
// => {'name':'Chris','age':31,'traits':
 
//    {'shoe_size':10,'hair':'brown','eyes':'blue'}}</syntaxhighlight>
 
//    {'shoe_size':10,'hair':'brown','eyes':'blue'}}</syntaxhighlight>
 
 
 
=== <code>‎clear()‎</code> ===
 
=== <code>‎clear()‎</code> ===
  
<syntaxhighlight class="react">static clear([callback]: ?(error: ?Error) => void)</syntaxhighlight>
+
<syntaxhighlight class="react" lang="javascript">static clear([callback]: ?(error: ?Error) => void)</syntaxhighlight>
 
تحذف جميع البيانات المُخزنة في <code>AsyncStorage</code>، حتى تلك المرتبطة بتطبيقات أخرى. لذلك لا يُنصح باستخدامها ويجب استخدام <code>removeItem</code> أو <code>multiRemove</code> لمسح المفاتيح المرتبطة بتطبيقك فقط. تُرجع كائن من النوع [https://www.google.com/url?q=https://wiki.hsoub.com/JavaScript/Promise&sa=D&ust=1611306791480000&usg=AOvVaw2elF2z1fPTgS6EQa20AEJ2 <code>promise</code>].
 
تحذف جميع البيانات المُخزنة في <code>AsyncStorage</code>، حتى تلك المرتبطة بتطبيقات أخرى. لذلك لا يُنصح باستخدامها ويجب استخدام <code>removeItem</code> أو <code>multiRemove</code> لمسح المفاتيح المرتبطة بتطبيقك فقط. تُرجع كائن من النوع [https://www.google.com/url?q=https://wiki.hsoub.com/JavaScript/Promise&sa=D&ust=1611306791480000&usg=AOvVaw2elF2z1fPTgS6EQa20AEJ2 <code>promise</code>].
  
سطر 194: سطر 190:
 
! الوصف
 
! الوصف
 
|-
 
|-
| callback
+
| <code>callback</code>
| ?(error: ?Error) => void
+
| <code>‪?(error: ?Error) => void</code>
 
| لا
 
| لا
 
| دالة تُستدعى عند حدوث خطأ اثناء العملية.
 
| دالة تُستدعى عند حدوث خطأ اثناء العملية.
 
|}
 
|}
 
 
 
=== <code>‎getAllKeys()‎</code> ===
 
=== <code>‎getAllKeys()‎</code> ===
  
<syntaxhighlight class="react">static getAllKeys([callback]: ?(error: ?Error, keys: ?Array<string>) => void)</syntaxhighlight>
+
<syntaxhighlight class="react" lang="javascript">static getAllKeys([callback]: ?(error: ?Error, keys: ?Array<string>) => void)</syntaxhighlight>
 
تتحصل على جميع المفاتيح المرتبطة بالتطبيق. تُرجع كائن من النوع [https://www.google.com/url?q=https://wiki.hsoub.com/JavaScript/Promise&sa=D&ust=1611306791480000&usg=AOvVaw2elF2z1fPTgS6EQa20AEJ2 <code>promise</code>].
 
تتحصل على جميع المفاتيح المرتبطة بالتطبيق. تُرجع كائن من النوع [https://www.google.com/url?q=https://wiki.hsoub.com/JavaScript/Promise&sa=D&ust=1611306791480000&usg=AOvVaw2elF2z1fPTgS6EQa20AEJ2 <code>promise</code>].
  
سطر 214: سطر 208:
 
! الوصف
 
! الوصف
 
|-
 
|-
| callback
+
| <code>callback</code>
| ?(error: ?Error) => void
+
| <code>‪?(error: ?Error) => void</code>
 
| لا
 
| لا
 
| دالة تُستدعى عند إكتمال العملية والحصول على المفاتيح أو عند حدوث خطأ.
 
| دالة تُستدعى عند إكتمال العملية والحصول على المفاتيح أو عند حدوث خطأ.
سطر 222: سطر 216:
 
=== <code>‎flushGetRequests()‎</code> ===
 
=== <code>‎flushGetRequests()‎</code> ===
  
<syntaxhighlight class="react">static flushGetRequests(): [object Object]</syntaxhighlight>
+
<syntaxhighlight class="react" lang="javascript">static flushGetRequests(): [object Object]</syntaxhighlight>
 
تحذف جميع الطلبات المُعلّقة عن طريق الحصول على البيانات كدفعة واحدة.
 
تحذف جميع الطلبات المُعلّقة عن طريق الحصول على البيانات كدفعة واحدة.
  
 
=== <code>‎multiGet()‎</code> ===
 
=== <code>‎multiGet()‎</code> ===
  
<syntaxhighlight class="react">static multiGet(keys: Array<string>, [callback]: ?(errors: ?Array<Error>, result: ?Array<Array <string>>) => void)</syntaxhighlight>
+
<syntaxhighlight class="react" lang="javascript">static multiGet(keys: Array<string>, [callback]: ?(errors: ?Array<Error>, result: ?Array<Array <string>>) => void)</syntaxhighlight>
 
تسمح بالحصول على العناصر دفعة واحدة عن طريق إرسال مجموعة من المفاتيح للدالة والحصول على البيانات المرتبطة بهذه المفاتيح في شكل أزواج (key: value). تُرجع كائن من النوع [https://www.google.com/url?q=https://wiki.hsoub.com/JavaScript/Promise&sa=D&ust=1611306791480000&usg=AOvVaw2elF2z1fPTgS6EQa20AEJ2 <code>promise</code>].
 
تسمح بالحصول على العناصر دفعة واحدة عن طريق إرسال مجموعة من المفاتيح للدالة والحصول على البيانات المرتبطة بهذه المفاتيح في شكل أزواج (key: value). تُرجع كائن من النوع [https://www.google.com/url?q=https://wiki.hsoub.com/JavaScript/Promise&sa=D&ust=1611306791480000&usg=AOvVaw2elF2z1fPTgS6EQa20AEJ2 <code>promise</code>].
  
<syntaxhighlight class="react">multiGet(['k1', 'k2'], cb) -> cb([['k1', 'val1'], ['k2', 'val2']])</syntaxhighlight>
+
<syntaxhighlight class="react" lang="javascript">multiGet(['k1', 'k2'], cb) -> cb([['k1', 'val1'], ['k2', 'val2']])</syntaxhighlight>
 
'''المعاملات'''
 
'''المعاملات'''
  
سطر 239: سطر 233:
 
! الوصف
 
! الوصف
 
|-
 
|-
| keys
+
| <code>keys</code>
| Array<string>
+
| <code>‪Array<string></code>
 
| نعم
 
| نعم
 
| مصفوفة من المفاتيح المراد جلب العناصر المرتبطة بها.
 
| مصفوفة من المفاتيح المراد جلب العناصر المرتبطة بها.
 
|-
 
|-
| callback
+
| <code>callback</code>
| ?(errors: ?Array<Error>, result: ?Array<Array <string>>) => void
+
| <code>‪?(errors: ?Array<Error>, result: ?Array<Array <string>>) => void</code>
 
| لا
 
| لا
 
| دالة تُستدعى عند إكتمال العملية والحصول على البيانات أو عند حدوث خطأ.
 
| دالة تُستدعى عند إكتمال العملية والحصول على البيانات أو عند حدوث خطأ.
سطر 252: سطر 246:
 
'''مثال'''
 
'''مثال'''
  
<syntaxhighlight class="react">AsyncStorage.getAllKeys((err, keys) => {
+
<syntaxhighlight class="react" lang="javascript">AsyncStorage.getAllKeys((err, keys) => {
 
   AsyncStorage.multiGet(keys, (err, stores) => {
 
   AsyncStorage.multiGet(keys, (err, stores) => {
 
     stores.map((result, i, store) => {
 
     stores.map((result, i, store) => {
سطر 261: سطر 255:
 
   });
 
   });
 
});</syntaxhighlight>
 
});</syntaxhighlight>
 
 
 
=== <code>‎multiSet()‎</code> ===
 
=== <code>‎multiSet()‎</code> ===
  
<syntaxhighlight class="react">static multiSet(keyValuePairs: Array<Array <string>>, [callback]: ?(errors: ?Array<Error>) => void)</syntaxhighlight>
+
<syntaxhighlight class="react" lang="javascript">static multiSet(keyValuePairs: Array<Array <string>>, [callback]: ?(errors: ?Array<Error>) => void)</syntaxhighlight>
تُحزِّن عددًا من الازواج (key: value) دفعة واحدة. عند اكتمال العملية تحصل على رد نداء واحد يحتوي على جميع الأخطاء في حال حدوثها. تُرجع كائن من النوع [https://www.google.com/url?q=https://wiki.hsoub.com/JavaScript/Promise&sa=D&ust=1611306791480000&usg=AOvVaw2elF2z1fPTgS6EQa20AEJ2 <code>promise</code>].
+
تُحزِّن عددًا من الازواج (<code>key: value</code>) دفعةً واحدة. عند اكتمال العملية تحصل على ردّ نداء واحد يحتوي على جميع الأخطاء في حال حدوثها. تُرجع كائن من النوع [https://www.google.com/url?q=https://wiki.hsoub.com/JavaScript/Promise&sa=D&ust=1611306791480000&usg=AOvVaw2elF2z1fPTgS6EQa20AEJ2 <code>promise</code>].
  
<syntaxhighlight class="react">multiSet([['k1', 'val1'], ['k2', 'val2']], cb);</syntaxhighlight>
+
<syntaxhighlight class="react" lang="javascript">multiSet([['k1', 'val1'], ['k2', 'val2']], cb);</syntaxhighlight>
 
{| class="wikitable"
 
{| class="wikitable"
 
! الاسم
 
! الاسم
سطر 275: سطر 267:
 
! الوصف
 
! الوصف
 
|-
 
|-
| keyValuePairs
+
| <code>keyValuePairs</code>
| Array<Array <string>>
+
| <code>‪Array<Array <string>></code>
 
| نعم
 
| نعم
| مصفومة من الازواج (key: value).
+
| مصفومة من الازواج (<code>key: value</code>).
 
|-
 
|-
| callback
+
| <code>callback</code>
| ?(errors: ?Array<Error>, result: ?Array<Array <string>>) => void
+
| <code>‪?(errors: ?Array<Error>, result: ?Array<Array <string>>) => void</code>
 
| لا
 
| لا
 
| دالة تُستدعى عند إكتمال العملة أو عند حدوث خطأ.
 
| دالة تُستدعى عند إكتمال العملة أو عند حدوث خطأ.
سطر 288: سطر 280:
 
=== <code>‎multiRemove()‎</code> ===
 
=== <code>‎multiRemove()‎</code> ===
  
<syntaxhighlight class="react">static multiRemove(keys: Array<string>, [callback]: ?(errors: ?Array<Error>) => void)</syntaxhighlight>
+
<syntaxhighlight class="react" lang="javascript">static multiRemove(keys: Array<string>, [callback]: ?(errors: ?Array<Error>) => void)</syntaxhighlight>
 
تحذف جميع البيانات المرتبطة بالمفاتيح المُعطاة للدالة. تُرجع كائن من النوع [https://www.google.com/url?q=https://wiki.hsoub.com/JavaScript/Promise&sa=D&ust=1611306791480000&usg=AOvVaw2elF2z1fPTgS6EQa20AEJ2 <code>promise</code>].
 
تحذف جميع البيانات المرتبطة بالمفاتيح المُعطاة للدالة. تُرجع كائن من النوع [https://www.google.com/url?q=https://wiki.hsoub.com/JavaScript/Promise&sa=D&ust=1611306791480000&usg=AOvVaw2elF2z1fPTgS6EQa20AEJ2 <code>promise</code>].
  
سطر 299: سطر 291:
 
! الوصف
 
! الوصف
 
|-
 
|-
| keys
+
| <code>keys</code>
| Array<string>
+
| <code>‪Array<string></code>
 
| نعم
 
| نعم
 
| مصفوفة من المفاتيح المراد حذفها.
 
| مصفوفة من المفاتيح المراد حذفها.
 
|-
 
|-
| callback
+
| <code>callback</code>
| ?(errors: ?Array<Error>) => void
+
| <code>‪?(errors: ?Array<Error>) => void</code>
 
| لا
 
| لا
 
| دالة تُستدعى عند إكتمال العملية أو عند حدوث خطأ.
 
| دالة تُستدعى عند إكتمال العملية أو عند حدوث خطأ.
سطر 312: سطر 304:
 
'''مثال'''
 
'''مثال'''
  
<syntaxhighlight class="react">let keys = ['k1', 'k2'];
+
<syntaxhighlight class="react" lang="javascript">let keys = ['k1', 'k2'];
 
AsyncStorage.multiRemove(keys, (err) => {
 
AsyncStorage.multiRemove(keys, (err) => {
 
   // keys k1 &amp; k2 removed, if they existed
 
   // keys k1 &amp; k2 removed, if they existed
 
   // do most stuff after removal (if you want)
 
   // do most stuff after removal (if you want)
 
});</syntaxhighlight>
 
});</syntaxhighlight>
 
 
 
=== <code>multiMerge</code> ===
 
=== <code>multiMerge</code> ===
  
<syntaxhighlight class="react">static multiMerge(keyValuePairs: Array<Array <string>>, [callback]: ?(errors: ?Array<Error>) => void)</syntaxhighlight>
+
<syntaxhighlight class="react" lang="javascript">static multiMerge(keyValuePairs: Array<Array <string>>, [callback]: ?(errors: ?Array<Error>) => void)</syntaxhighlight>
 
تُحدِّث قيم أكثر من مفتاح واحد دفعة واحدة. ويجب أن تكون جميع القيم والمفاتيح في شكل سلسلة JSON. تُرجع كائن من النوع [https://www.google.com/url?q=https://wiki.hsoub.com/JavaScript/Promise&sa=D&ust=1611306791480000&usg=AOvVaw2elF2z1fPTgS6EQa20AEJ2 <code>promise</code>].
 
تُحدِّث قيم أكثر من مفتاح واحد دفعة واحدة. ويجب أن تكون جميع القيم والمفاتيح في شكل سلسلة JSON. تُرجع كائن من النوع [https://www.google.com/url?q=https://wiki.hsoub.com/JavaScript/Promise&sa=D&ust=1611306791480000&usg=AOvVaw2elF2z1fPTgS6EQa20AEJ2 <code>promise</code>].
  
سطر 334: سطر 324:
 
! الوصف
 
! الوصف
 
|-
 
|-
| keyValuePairs
+
| <code>keyValuePairs</code>
| Array<Array <string>>
+
| <code>‪Array<Array <string>></code>
 
| نعم
 
| نعم
 
| مصفومة من الأزواج (key: value).
 
| مصفومة من الأزواج (key: value).
 
|-
 
|-
| callback
+
| <code>callback</code>
| ?(errors: ?Array<Error>, result: ?Array<Array <string>>) => void
+
| <code>‪?(errors: ?Array<Error>, result: ?Array<Array <string>>) => void</code>
 
| لا
 
| لا
 
| دالة تُستدعى عند إكتمال العملة أو عند حدوث خطأ.
 
| دالة تُستدعى عند إكتمال العملة أو عند حدوث خطأ.
سطر 347: سطر 337:
 
'''مثال'''
 
'''مثال'''
  
<syntaxhighlight class="react">// first user, initial values
+
<syntaxhighlight class="react" lang="javascript">// first user, initial values
 
let UID234_object = {
 
let UID234_object = {
 
   name: 'Chris',
 
   name: 'Chris',

مراجعة 05:41، 6 مارس 2021

مهمل، يمكنك استخدام async-storage بدلًا عنه.

AsyncStorage هو نظام تخزين مستمر غير مشفّر وغير متزامن، يُخزن البيانات في صورة أزواج (key: value)، وهو نظام موحّد لكلّ أجزاء التطبيق، ويجب استعماله بدلًا عن LocalStorage.

يُفضّل استخدام التجريد (abstraction) على مستوى أعلى من AsyncStorage بدلًا من استخدامه على AsyncStorage مباشرةً في حالة التخزين الثقيل للبيانات.

يدعم نظام iOS نظام التخزين AsyncStorage بواسطة شيفرة أصلية تُخزِّن القيم الصغيرة في قاموس متسلسل، والقيم الكبيرة في ملفّات منفصلة؛ أمّا نظام أندويد فسيتخدم إمّا RocksDB أو SQLite بناءً على ما هو متاح.

شيفرة جافاسكريبت الخاصة بنظام التخزين AsyncStorage توفِّر واجهة برمجة تطبيقات (API) واضحة، وكائنات خطأ (Error Objects)، ودوال غير متعددة. كلّ دالة في واجهة برمجة التطبيقات (API) تُرجع وعدًا (Promise).

استيراد مكتبة AsyncStorage

import { AsyncStorage} from 'react-native';

حفظ البيانات

_storeData = async () => {
  try {
    await AsyncStorage.setItem(
      '@MySuperStore:key',
      'I like to save it.'
    );
  } catch (error) {
    // Error saving data
  }
};

قراءة البيانات

_retrieveData = async () => {
  try {
    const value = await AsyncStorage.getItem('TASKS');
    if (value !== null) {
      // We have data!!
      console.log(value);
    }
  } catch (error) {
    // Error retrieving data
  }
};

مرجع الدوال

‎getItem()‎

static getItem(key: string, [callback]: ?(error: ?Error, result: ?string) => void)

تجلب البيانات الخاصة بمفتاح (key) معيّن وتستدعي ردّ نداء (callback). بعد إكتمال العملية أو حدوث خطأ أثناء التنفيذ تُرجع كائن من النوع promise.

المعاملات

الاسم النوع مطلوب الوصف
key سلسلة نصية (string) نعم المفتاح الخاص بالبيانات المُراد جلبها.
callback ‪?(error: ?Error, result: ?string) => void لا دالة تُستدعى عند إكتمال عملية جلب البيانات أو حدوث خطأ أثناء العملية.

‎setItem()‎

static setItem(key: string, value: string, [callback]: ?(error: ?Error) => void)

تُخزِّن البيانات في صورة زوج (key: value)، وتستدعي دالة بعد إكتمال العملية أو حدوث خطأ أثناء التنفيذ. تُرجع كائن من النوع promise.

المعاملات

الاسم النوع مطلوب الوصف
key سلسلة نصية (string) نعم المفتاح الخاص بالعنصر المُراد تخزينه.
value سلسلة نصية (string) نعم العنصر المراد تخزينه.
callback ?(error: ?Error) => void لا دالة تُستدعى عند حدوث خطأ اثناء العملية.

‎removeItem()‎

static removeItem(key: string, [callback]: ?(error: ?Error) => void)

تحذف العنصر المرتبط بالمفتاح المعين، وتستدعي دالة بعد إكتمال العملية أو حدوث خطأ أثناء التنفيذ. تُرجع كائن من النوع promise.

الاسم النوع مطلوب الوصف
key سلسلة نصية (string) نعم المفتاح الخاص بالعنصر المُراد حذفه.
callback ‪?(error: ?Error) => void لا دالة تُستدعى عند حدوث خطأ اثناء العملية.

mergeItem

static mergeItem(key: string, value: string, [callback]: ?(error: ?Error) => void)

تُحدِّث القيمة المرتبطة معيّن. ويجب أن يكون المفتاح والقيمة الجديدة في شكل سلسلة JSON. تُرجع كائن من النوع promise.

المعاملات

الاسم النوع مطلوب الوصف
key سلسلة نصية (string) نعم المفتاح المُراد تحديث قيمته.
value سلسلة نصية (string) نعم القيمة الجديدة للمفتاح.
callback ‪?(error: ?Error) => void لا دالة تُستدعى عند حدوث خطأ اثناء العملية.

مثال

let UID123_object = {
  name: 'Chris',
  age: 30,
  traits: { hair: 'brown', eyes: 'brown' }
};
// You only need to define what will be added or updated
let UID123_delta = {
  age: 31,
  traits: { eyes: 'blue', shoe_size: 10 }
};

AsyncStorage.setItem(
  'UID123',
  JSON.stringify(UID123_object),
  () => {
    AsyncStorage.mergeItem(
      'UID123',
      JSON.stringify(UID123_delta),
      () => {
        AsyncStorage.getItem('UID123', (err, result) => {
          console.log(result);
        });
      }
    );
  }
);

// Console log result:
// => {'name':'Chris','age':31,'traits':
//    {'shoe_size':10,'hair':'brown','eyes':'blue'}}

‎clear()‎

static clear([callback]: ?(error: ?Error) => void)

تحذف جميع البيانات المُخزنة في AsyncStorage، حتى تلك المرتبطة بتطبيقات أخرى. لذلك لا يُنصح باستخدامها ويجب استخدام removeItem أو multiRemove لمسح المفاتيح المرتبطة بتطبيقك فقط. تُرجع كائن من النوع promise.

المعاملات

الاسم النوع مطلوب الوصف
callback ‪?(error: ?Error) => void لا دالة تُستدعى عند حدوث خطأ اثناء العملية.

‎getAllKeys()‎

static getAllKeys([callback]: ?(error: ?Error, keys: ?Array<string>) => void)

تتحصل على جميع المفاتيح المرتبطة بالتطبيق. تُرجع كائن من النوع promise.

المعاملات

الاسم النوع مطلوب الوصف
callback ‪?(error: ?Error) => void لا دالة تُستدعى عند إكتمال العملية والحصول على المفاتيح أو عند حدوث خطأ.

‎flushGetRequests()‎

static flushGetRequests(): [object Object]

تحذف جميع الطلبات المُعلّقة عن طريق الحصول على البيانات كدفعة واحدة.

‎multiGet()‎

static multiGet(keys: Array<string>, [callback]: ?(errors: ?Array<Error>, result: ?Array<Array <string>>) => void)

تسمح بالحصول على العناصر دفعة واحدة عن طريق إرسال مجموعة من المفاتيح للدالة والحصول على البيانات المرتبطة بهذه المفاتيح في شكل أزواج (key: value). تُرجع كائن من النوع promise.

multiGet(['k1', 'k2'], cb) -> cb([['k1', 'val1'], ['k2', 'val2']])

المعاملات

الاسم النوع مطلوب الوصف
keys ‪Array<string> نعم مصفوفة من المفاتيح المراد جلب العناصر المرتبطة بها.
callback ‪?(errors: ?Array<Error>, result: ?Array<Array <string>>) => void لا دالة تُستدعى عند إكتمال العملية والحصول على البيانات أو عند حدوث خطأ.

مثال

AsyncStorage.getAllKeys((err, keys) => {
  AsyncStorage.multiGet(keys, (err, stores) => {
    stores.map((result, i, store) => {
      // get at each store's key/value so you can work with it
      let key = store[i][0];
      let value = store[i][1];
    });
  });
});

‎multiSet()‎

static multiSet(keyValuePairs: Array<Array <string>>, [callback]: ?(errors: ?Array<Error>) => void)

تُحزِّن عددًا من الازواج (key: value) دفعةً واحدة. عند اكتمال العملية تحصل على ردّ نداء واحد يحتوي على جميع الأخطاء في حال حدوثها. تُرجع كائن من النوع promise.

multiSet([['k1', 'val1'], ['k2', 'val2']], cb);
الاسم النوع مطلوب الوصف
keyValuePairs ‪Array<Array <string>> نعم مصفومة من الازواج (key: value).
callback ‪?(errors: ?Array<Error>, result: ?Array<Array <string>>) => void لا دالة تُستدعى عند إكتمال العملة أو عند حدوث خطأ.

‎multiRemove()‎

static multiRemove(keys: Array<string>, [callback]: ?(errors: ?Array<Error>) => void)

تحذف جميع البيانات المرتبطة بالمفاتيح المُعطاة للدالة. تُرجع كائن من النوع promise.

المعاملات

الاسم النوع مطلوب الوصف
keys ‪Array<string> نعم مصفوفة من المفاتيح المراد حذفها.
callback ‪?(errors: ?Array<Error>) => void لا دالة تُستدعى عند إكتمال العملية أو عند حدوث خطأ.

مثال

let keys = ['k1', 'k2'];
AsyncStorage.multiRemove(keys, (err) => {
  // keys k1 &amp; k2 removed, if they existed
  // do most stuff after removal (if you want)
});

multiMerge

static multiMerge(keyValuePairs: Array<Array <string>>, [callback]: ?(errors: ?Array<Error>) => void)

تُحدِّث قيم أكثر من مفتاح واحد دفعة واحدة. ويجب أن تكون جميع القيم والمفاتيح في شكل سلسلة JSON. تُرجع كائن من النوع promise.

ملاحظة: بعض عمليات التنفيذ الأصلية (Native implementations) لا تدعم هذه الدالة.

المعاملات

الاسم النوع مطلوب الوصف
keyValuePairs ‪Array<Array <string>> نعم مصفومة من الأزواج (key: value).
callback ‪?(errors: ?Array<Error>, result: ?Array<Array <string>>) => void لا دالة تُستدعى عند إكتمال العملة أو عند حدوث خطأ.

مثال

// first user, initial values
let UID234_object = {
  name: 'Chris',
  age: 30,
  traits: { hair: 'brown', eyes: 'brown' }
};

// first user, delta values
let UID234_delta = {
  age: 31,
  traits: { eyes: 'blue', shoe_size: 10 }
};

// second user, initial values
let UID345_object = {
  name: 'Marge',
  age: 25,
  traits: { hair: 'blonde', eyes: 'blue' }
};

// second user, delta values
let UID345_delta = {
  age: 26,
  traits: { eyes: 'green', shoe_size: 6 }
};

let multi_set_pairs = [
  ['UID234', JSON.stringify(UID234_object)],
  ['UID345', JSON.stringify(UID345_object)]
];
let multi_merge_pairs = [
  ['UID234', JSON.stringify(UID234_delta)],
  ['UID345', JSON.stringify(UID345_delta)]
];

AsyncStorage.multiSet(multi_set_pairs, (err) => {
  AsyncStorage.multiMerge(multi_merge_pairs, (err) => {
    AsyncStorage.multiGet(['UID234', 'UID345'], (err, stores) => {
      stores.map((result, i, store) => {
        let key = store[i][0];
        let val = store[i][1];
        console.log(key, val);
      });
    });
  });
});

// Console log results:
// => UID234 {"name":"Chris","age":31,"traits":{"shoe_size":10,"hair":"brown","eyes":"blue"}}
// => UID345 {"name":"Marge","age":26,"traits":{"shoe_size":6,"hair":"blonde","eyes":"green"}}

المصادر

صفحة AsyncStorage في توثيق React Native الرسمي.