عن المشروع

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 ووصفات مجتمعية لتنظيم الإجراءات، وحفظ الحالة، واستخدام السياق، وتقسيم/تكوين الحالة.