npm تثبيت رد الفعل الأصلي-mmkv-storage
المعرض المسبق
تهدف هذه المكتبة إلى توفير حل سريع وموثوق لاحتياجات تخزين البيانات الخاصة بك في التطبيقات التفاعلية الأصلية. يستخدم MMKV من Tencent ضمن نظامي Android وiOS اللذين يستخدمهما تطبيق WeChat (أكثر من مليار مستخدم). على عكس حلول التخزين الأخرى لـ React Native، تتيح لك هذه المكتبة تخزين أي نوع من أنواع البيانات، في أي عدد من مثيلات قاعدة البيانات، مع أو بدون تشفير بطريقة سريعة وفعالة للغاية. اقرأ عنها في منشور المدونة هذا الذي كتبته على dev.to
تعرف على كيفية إنشاء الوحدة النمطية الخاصة بك باستخدام JSI على مدونتي
يعمل فقط مع رد الفعل الأصلي 0.71.0 وما فوق. إذا كنت تستخدم الإصدار الأقدم من React Native، فاستمر في استخدام 0.8.x.
بدءًا من v0.5.0
تمت إعادة كتابة المكتبة بلغة C++ على نظامي Android وiOS. يستخدم React Native JSI مما يجعله أسرع خيار تخزين لـ React Native.
(~ 50 ألف Android/30 ألف iOS) وأصغر حجمًا عند تعبئته.
يستخدم MMKV mmap للحفاظ على مزامنة الذاكرة مع الملف، وprotobuf لتشفير/فك تشفير القيم لتحقيق أفضل أداء. يمكنك رؤية المعايير هنا: Android وiOS
useMMKVStorage
و useIndex
تتيح الخطافات لوحدة التخزين تحديث تطبيقك عند حدوث تغيير في وحدة التخزين.
useMMKVStorage
بدءًا من v0.5.5
، وبفضل قوة JSI، أصبح لدينا الآن خطاف useMMKVStorage
الخاص بنا. فكر في الأمر كحالة مستمرة ستكتب دائمًا كل تغيير في مساحة التخزين وتحديث واجهة مستخدم التطبيق الخاص بك على الفور. لا يهم إذا قمت بإعادة تحميل التطبيق أو إعادة تشغيله.
import { MMKVLoader , useMMKVStorage } from 'react-native-mmkv-storage' ;
const storage = new MMKVLoader ( ) . initialize ( ) ;
const App = ( ) => {
const [ user , setUser ] = useMMKVStorage ( 'user' , storage , 'robert' ) ;
const [ age , setAge ] = useMMKVStorage ( 'age' , storage , 24 ) ;
return (
< View style = { styles . header } >
< Text style = { styles . headerText } >
I am { user } and I am { age } years old.
</ Text >
</ View >
) ;
} ;
تعرف على المزيد حول useMMKVStorage
وقم بربطه في المستندات.
useIndex
خطاف سيأخذ مجموعة من المفاتيح ويعيد مجموعة من القيم لتلك المفاتيح. من المفترض أن يعمل هذا مع المعاملات. عندما تنتهي من إنشاء فهرسك المخصص، ستحتاج إلى طريقة سهلة وسريعة لتحميل قيم الفهرس الخاص بك. يستمع الخطاف useIndex بشكل نشط إلى كافة تغييرات القراءة/الكتابة ويقوم بتحديث القيم وفقًا لذلك.
const App = ( ) => {
// Get list of all post ids
const postsIndex = useMMKVStorage ( "postsIndex" , storage , [ ] ) ; // ['post123','post234'];
// Get the posts based on those ids.
const [ posts , update , remove ] = useIndex ( postsIndex , "object" storage ) ;
return < View >
< FlatList
data = { posts }
renderItem = { ... }
>
</ View >
}
تعرف على المزيد حول useIndex
وقم بربطه في المستندات.
استمع إلى دورة حياة القيمة وقم بتغييرها أثناء التنقل. تتيح لك المعاملات تسجيل وظائف دورة الحياة مع مثيل التخزين الخاص بك مثل القراءة والكتابة والحذف. يتيح ذلك تحكمًا أفضل وأكثر إدارة في مساحة التخزين ويتيح لك أيضًا إنشاء فهارس مخصصة باستخدام بضعة أسطر من التعليمات البرمجية.
MMKV . transactions . register ( 'object' , 'beforewrite' , ( { key , value } ) => {
if ( key . startsWith ( 'post.' ) ) {
// Call this only when the key has the post prefix.
let indexForTag = MMKV . getArray ( ` ${ value . tag } -index` ) || [ ] ;
MMKV . setArray ( indexForTag . push ( key ) ) ;
}
} ) ;
تعرف على المزيد حول كيفية استخدام المعاملات في المستندات
يدعم MMKV الوصول المتزامن للقراءة والقراءة والكتابة بين العمليات. هذا يعني أنه يمكنك استخدام MMKV لمختلف الإضافات والأدوات وتطبيقك.
يمكنك إنشاء العديد من مثيلات قاعدة البيانات. يساعد هذا بشكل كبير إذا كان لديك وحدات منطقية/وحدات منفصلة في نفس التطبيق تستخدم البيانات بشكل مختلف، كما أنه يساعد في تحسين الأداء نظرًا لأن كل مثيل لقاعدة البيانات صغير بدلاً من قاعدة بيانات واحدة ضخمة مما يجعل الأمور أبطأ مع نموها.
const userStorage = new MMKVLoader ( ) . withEncryption ( ) . withInstanceID ( 'userdata' ) . initialize ( ) ;
const settingsStorage = new MMKVLoader ( ) . withInstanceID ( 'settings' ) . initialize ( ) ;
تدعم المكتبة التشفير الكامل (AES CFB-128) على Android وiOS. يمكنك اختيار تخزين مفتاح التشفير الخاص بك بشكل آمن للاستخدام المستمر. تستخدم المكتبة Keychain على iOS وAndroid Keystore على android (API 23 وما فوق). تشفير المثيل بسيط:
const storage = new MMKVLoader ( )
. withEncryption ( ) // Generates a random key and stores it securely in Keychain
. initialize ( ) ;
وهذا كل شيء.
لكل مثيل قاعدة بيانات، يوجد فهرس مفتاح عالمي واحد ثم هناك فهارس لكل نوع من البيانات. لذا فإن الاستعلام سهل وسريع.
تمت إضافة دعم استمرار الإعادة أيضًا بدءًا من الإصدار 0.3.2.
يمكنك استخدام هذه المكتبة مع سير عمل المعرض.
بفضل البرنامج المساعد pnthach95 Flipper، أصبح هنا أخيرًا. https://github.com/pnthach95/flipper-plugin-react-native-mmkv-storage. وهو يدعم التسجيل ومعالجة قيم التخزين بسرعة.
إذا كنت تستخدم المكتبة في أحد مشاريعك، فكر في دعمها بنجمة. يستغرق الأمر الكثير من الوقت والجهد للحفاظ على هذا الأمر ومعالجة المشكلات والأخطاء. شكرًا لك.
هذه أخبار رائعة! هناك الكثير مما يحدث بوتيرة سريعة جدًا في هذه المكتبة في الوقت الحالي. كل مساعدة صغيرة ثمينة. يمكنك المساهمة بعدة طرق:
هذه المكتبة مرخصة بموجب ترخيص MIT.
حقوق النشر © عمار أحمد (@ammarahm-ed)