كيفية استخدام Tinybase في تطبيق React

إدارة الحالة العامة باستخدام Tinybase، مكتبة تفاعلية لـ React و React Native.

·2 دقيقة قراءة
a database icon

TinyBase: متجر تفاعلي فائق الخفة للتطبيقات المحلية أولاً

TinyBase هو مخزن بيانات تفاعلي صغير (~5–11 كيلوبايت)، مختبر بالكامل ومفتوح المصدر، يحتوي على فهرسة مدمجة، مقاييس، فرض مخطط، استعلامات، ومزامنة CRDT. تم تصميمه للتطبيقات المحلية أولاً ويعمل في أي بيئة تشغيل جافاسكريبت—المتصفح، Node، وحتى العمال.

1. البدء والأساسيات في المتجر

قم بتثبيته أو احصل عليه عبر CDN.

npmbash
1npm install tinybase

typescript
1import {createStore} from 'tinybase'
2const store = createStore()
3store.setValue('count', 1)
4console.log(store.getValue('count')) // → 1

يمكنك أيضًا إدارة البيانات الجدولية.

typescript
1store.setTable('pets', {fido: {species: 'dog'}})
2store.setCell('pets', 'fido', 'color', 'brown')
3console.log(store.getRow('pets', 'fido'))
4// → { species: 'dog', color: 'brown' }

المستمعات التفاعلية تتيح لك الاستجابة للتغييرات بأي درجة من الدقة.

2. دمج React (طبقة واجهة المستخدم الاختيارية)

استخدم tinybase/ui-react للربط السلس مع React.

typescript
1import {useCell} from 'tinybase/ui-react'
2
3function PetColor({store}) {
4 const color = useCell('pets', 'fido', 'color', store)
5 return <>Color: {color}</>
6}

تُحدَّث واجهة المستخدم تلقائيًا عندما يتغيّر الخلية.

3. تنظيم البيانات: المخططات، الفهارس، العلاقات، المقاييس

تفرض المخططات الأنواع والقيم الافتراضية.

typescript
1store.setTablesSchema({
2 pets: { species: {type: 'string'}, sold: {type: 'boolean', default: false} }
3})

الفهارس تُسرّع عمليات البحث.

typescript
1const indexes = createIndexes(store)
2indexes.setIndexDefinition('bySpecies', 'pets', 'species')

العلاقات تربط الجداول.

typescript
1const rels = createRelationships(store)
2rels.setRelationshipDefinition('petSpecies', 'pets', 'species', 'species')

تسمح المقاييس بالتجميعات (مثل تتبع أعلى سعر).

typescript
1const metrics = createMetrics(store)
2metrics.setMetricDefinition('maxPrice', 'pets', 'max', 'price')

٤. الاستمرارية والمزامنة

الاستمرارية: حفظ المتجر في sessionStorage أو IndexedDB أو الملفات.

typescript
1import {createSessionPersister} from 'tinybase/persisters/persister-browser'
2const persister = createSessionPersister(store, 'myApp')
3await persister.save()

المزامنة: استخدم MergeableStore القائم على CRDT للمزامنة عبر الأقران أو الخادم.

  • عبر WebSockets (مثلاً، createWsServer + WsSynchronizer)
  • أنظمة CRDT من طرف ثالث (Yjs، Automerge)
  • قواعد البيانات (SQLite، Postgres)
  • كائنات ديوَرية من كلاودفلير

5. صمم تطبيقك

TinyBase يمنحك المرونة.

  • متجر مستقل يعتمد على الذاكرة فقط (مناسب للنماذج الأولية)
  • بيانات محملة من السحابة للقراءة فقط
  • استمرار المتصفح المحلي
  • مزامنة من جانب العميل فقط عبر CRDT
  • مزامنة العميل‑الخادم (الخادم كمصدر للحقائق)
  • تكامل الطرف الثالث (Automerge، Yjs)
  • استخدم عدة مخازن إذا لزم الأمر—واحد لحالة واجهة المستخدم المؤقتة، وآخر للمستندات المحفوظة، إلخ.

٦. الميزات المتقدمة

التراجع/الإعادة عبر نقاط التحقق

محرك الاستعلام (TinyQL) للاستعلامات التفاعلية المشابهة لـ SQL والعمليات الانضمامية.

أداة المفتش لتصحيح الأخطاء في متجرك في الوقت الفعلي

ملخص

TinyBase هو مخزن بيانات ميكرو‑تفاعلي يتعامل مع كل شيء من أزواج المفتاح‑القيمة البسيطة إلى ربط واجهات المستخدم المتقدمة، والمزامنة، والاحتفاظ بالبيانات، والتراجع. أضف فقط ما تحتاجه وصمم تجارب محلية‑أول معقدة بأقل أثر ممكن.

مشاركة:
Mouktar Aden

الكاتب Mouktar Aden