عن المشروع
Valtio هي مكتبة لإدارة الحالة مبنية حول بروكسيات JavaScript، ويمكن استخدامها مع React وفي JavaScript العادي. فكرتها الأساسية بسيطة: لف كائن الحالة باستخدام `proxy()` فيصبح بروكسيًا واعيًا يمكن تعديله مثل كائن عادي من أي مكان في الكود.
القدرات الرئيسية الموصوفة في ملف README:
- **حالة البروكسي**: `proxy({ count: 0, text: 'hello' })` ينشئ حالة قابلة للتعديل؛ التعديلات مثل `++state.count` تعمل كما في الكائنات العادية.
- **التكامل مع React**: `useSnapshot(state)` يُرجع لقطة محلية للعرض. تُعاد مكونات العرض فقط عندما تتغير الأجزاء التي تم الوصول إليها من الحالة، وهو ما تصفه المشروع بأنه محسّن للعرض. خيار `sync: true` يعطل التجميع لحالات مثل حقول الإدخال المتحكم بها.
- **الاشتراكات**: `subscribe` يعمل على الحالة كاملة أو على كائنات فرعية، و`subscribeKey` يستهدف القيم البدائية. أداة `watch` تشترك تلقائيًا بناءً على الاستخدام.
- **دعم Suspense**: متوافق مع خطاف `use` في React 19 لقراءة البيانات غير المتزامنة المخزنة في الحالة، مع معالجة المكون الأب للحالات الاحتياطية والأخطاء.
- **كائنات غير متتبعة**: `ref` يحافظ على الكائنات الكبيرة أو الخاصة (مثل عقد DOM) داخل الحالة دون تحويلها إلى بروكسيات.
- **الاستخدام العادي**: `valtio/vanilla` يصدّر `proxy` و`subscribe` و`snapshot` للاستخدام خارج React.
- **الأدوات**: `useProxy` يوفر بروكسيًا مبسطًا للمبتدئين؛ `proxySet` و`proxyMap` يحاكيان سلوك Set وMap الأصليين؛ يمكن تعريف الخصائص المحسوبة باستخدام getters الكائن.
- **أدوات المطور**: تكامل مع إضافة Redux DevTools للكائنات والمصفوفات العادية.
- **التوافق**: Valtio v2 يستهدف React 18 وما فوق، ويعتمد فقط على `react`، ويعمل مع عارضات مثل react-dom وreact-native وreact-three-fiber، بالإضافة إلى Node.js وNext.js.
يذكر ملف README أيضًا ملاحظات حول أنواع TypeScript المتعلقة بنوع اللقطة للقراءة فقط، وتحذيرات حول سلوك `this` في الدوال (مع توصية بالدوال السهمية)، ويشير إلى إضافة eslint ووصفات مجتمعية لتنظيم الإجراءات، وحفظ الحالة، واستخدام السياق، وتقسيم/تكوين الحالة.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.