منصوبے کے بارے میں

والٹیو (Valtio) ایک اسٹیٹ مینجمنٹ لائبریری ہے جو جاوا اسکرپٹ پراکسیز کے گرد بنائی گئی ہے اور ری ایکٹ کے ساتھ اور سادہ ونیلا جاوا اسکرپٹ میں استعمال کی جا سکتی ہے۔ اس کا بنیادی خیال سادہ ہے: کسی اسٹیٹ آبجیکٹ کو `proxy()` سے لپیٹ دیں اور یہ ایک خود آگاہ پراکسی بن جاتا ہے جسے آپ کے کوڈ میں کہیں سے بھی عام آبجیکٹ کی طرح تبدیل کیا جا سکتا ہے۔ README میں بیان کردہ اہم صلاحیتیں: - **پراکسی اسٹیٹ**: `proxy({ count: 0, text: 'hello' })` قابلِ تبدیل اسٹیٹ بناتا ہے؛ `++state.count` جیسی تبدیلیاں عام آبجیکٹس کی طرح کام کرتی ہیں۔ - **ری ایکٹ انٹیگریشن**: `useSnapshot(state)` رینڈرنگ کے لیے ایک مقامی اسنیپ شاٹ واپس کرتا ہے۔ کمپونینٹس صرف اُس وقت دوبارہ رینڈر ہوتے ہیں جب اسٹیٹ کے وہ حصے تبدیل ہوں جن تک رسائی کی گئی ہو، جسے پروجیکٹ رینڈر کے لیے بہتر بنایا گیا قرار دیتا ہے۔ `sync: true` آپشن کنٹرولڈ ان پٹس جیسے معاملات کے لیے بیچنگ غیر فعال کر دیتا ہے۔ - **سبسکرپشنز**: `subscribe` پوری اسٹیٹ یا ذیلی آبجیکٹس پر کام کرتا ہے، اور `subscribeKey` قدیم اقدار کو نشانہ بناتا ہے۔ ایک `watch` یوٹیلیٹی استعمال کی بنیاد پر خودکار سبسکرائب کرتی ہے۔ - **Suspense سپورٹ**: اسٹیٹ میں رکھے غیر متزامن ڈیٹا کو پڑھنے کے لیے ری ایکٹ 19 کے `use` ہک کے ساتھ مطابقت رکھتا ہے، جہاں fallback اور errors والدین ہینڈل کرتا ہے۔ - **غیر ٹریک شدہ آبجیکٹس**: `ref` بڑے یا خاص آبجیکٹس (جیسے DOM نوڈس) کو انہیں پراکسی بنائے بغیر اسٹیٹ کے اندر رکھتا ہے۔ - **ونیلا استعمال**: `valtio/vanilla` ری ایکٹ سے باہر استعمال کے لیے `proxy`، `subscribe`، اور `snapshot` ایکسپورٹ کرتا ہے۔ - **یوٹیلیٹیز**: `useProxy` مبتدیوں کے لیے ایک سادہ سطحی پراکسی پیش کرتا ہے؛ `proxySet` اور `proxyMap` مقامی Set اور Map کے رویے کی نقل کرتے ہیں؛ computed خصوصیات آبجیکٹ گیٹرز کے ساتھ متعین کی جا سکتی ہیں۔ - **ڈیو ٹولز**: سادہ آبجیکٹس اور اریز کے لیے Redux DevTools Extension کے ساتھ انٹیگریشن۔ - **مطابقت**: Valtio v2 ری ایکٹ 18 اور اس سے اوپر کو نشانہ بناتا ہے، صرف `react` پر منحصر ہے، اور react-dom، react-native، اور react-three-fiber جیسے رینڈررز کے ساتھ ساتھ Node.js اور Next.js کے ساتھ بھی کام کرتا ہے۔ README میں read-only اسنیپ شاٹ ٹائپ کے گرد TypeScript ٹائپنگ کے تحفظات بھی نوٹ کیے گئے ہیں، میتھڈز میں `this` کے رویے کے بارے میں احتیاط (ایرو فنکشنز کی سفارش) کی گئی ہے، اور ایک eslint پلگ ان کے ساتھ ساتھ ایکشنز کو منظم کرنے، اسٹیٹ کو برقرار رکھنے، context استعمال کرنے، اور اسٹیٹ کو تقسیم/ترکیب کرنے کے لیے کمیونٹی ترکیبوں کی طرف اشارہ کیا گیا ہے۔