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

Reselect ایک لائبریری ہے جو میموائزڈ "سلیکٹر" فنکشنز بنانے کے لیے ہے۔ یہ عام طور پر Redux کے ساتھ استعمال ہوتی ہے، لیکن اسے کسی بھی سادہ جاوا اسکرپٹ امیوٹیبل ڈیٹا کے ساتھ بھی استعمال کیا جا سکتا ہے۔ README میں بیان کردہ اہم خصوصیات: - سلیکٹرز مشتق ڈیٹا کمپیوٹ کر سکتے ہیں، جس سے Redux کو کم سے کم ممکنہ اسٹیٹ ذخیرہ کرنے کی اجازت ملتی ہے۔ - سلیکٹرز موثر ہیں: سلیکٹر کو دوبارہ کمپیوٹ نہیں کیا جاتا جب تک کہ اس کے دلائل میں سے کوئی تبدیل نہ ہو۔ - سلیکٹرز کمپوز ایبل ہیں: انہیں دوسرے سلیکٹرز کے ان پٹ کے طور پر استعمال کیا جا سکتا ہے۔ پروجیکٹ مقصد، محرک، اور عام استعمال کے نمونوں کے پس منظر کے لیے Redux دستاویزات کے صفحہ کی طرف اشارہ کرتا ہے جس میں React-Redux کے ساتھ استعمال بھی شامل ہے۔ تنصیب کے اختیارات: - Redux Toolkit: Reselect پہلے سے ہی آفیشل Redux Toolkit پیکیج میں بطور ڈیفالٹ شامل ہے، لہذا مزید تنصیب کی ضرورت نہیں ہے۔ اسے `@reduxjs/toolkit` سے `createSelector` کے طور پر درآمد کیا جا سکتا ہے۔ - اسٹینڈ اکیلے: npm، Yarn، یا pnpm کے ذریعے `reselect` پیکیج انسٹال کریں۔ دستاویزات reselect.js.org پر میزبانی کی جاتی ہیں اور ان میں تعارف، Reselect کے کام کرنے کے طریقے کی وضاحت، `createSelector`، `createSelectorCreator`، `createStructuredSelector`، صرف ڈیولپمنٹ چیکس، `lruMemoize`، اور `weakMapMemoize` کے API حوالہ جات، نیز ایک FAQ شامل ہے۔ بنیادی استعمال: `createSelector` ایک یا زیادہ ان پٹ سلیکٹرز قبول کرتا ہے جو دلائل سے اقدار نکالتے ہیں، اور ایک ریزلٹ فنکشن جو نکالی گئی اقدار کو وصول کرتا ہے اور ایک مشتق قدر لوٹاتا ہے۔ پیدا کردہ آؤٹ پٹ سلیکٹر صرف اس وقت دوبارہ حساب کرتا ہے جب نکالی گئی اقدار تبدیل ہوں۔ README میں ایک مثال شامل ہے جس سے ظاہر ہوتا ہے کہ ایک سادہ سلیکٹر ہر کال پر چلتا ہے، جبکہ ایک میموائزڈ سلیکٹر دوبارہ حساب چھوڑ دیتا ہے اور جب ان پٹ تبدیل نہیں ہوتے تو موجودہ ریزلٹ ریفرنس لوٹاتا ہے۔ یہ ریفرنس استحکام React-Redux اور React جیسی لائبریریوں کے لیے اہم قرار دیا گیا ہے جو UI اپڈیٹس کو بہتر بنانے کے لیے ریفرنس برابری کی جانچ پر انحصار کرتی ہیں۔ README اصطلاحات کی وضاحت کرتا ہے: سلیکٹر فنکشن، ان پٹ سلیکٹرز، آؤٹ پٹ سلیکٹر، ریزلٹ فنکشن، اور ڈیپینڈنسیز۔ ورژن 5.0.0 میں بیان کردہ تبدیلیاں شامل ہیں: - حسب ضرورت: `createSelectorCreator` کے لیے آپشنز آبجیکٹ جس میں کسٹمائزڈ `memoize` اور `argsMemoize` فنکشنز اور ان کے آپشنز ہوتے ہیں؛ `createSelector` براہ راست `memoize` اور `argsMemoize` کی حسب ضرورت کو سپورٹ کرتا ہے۔ - میموائزیشن: نیا ڈیفالٹ میموائزیشن فنکشن `weakMapMemoize`؛ ڈیبگنگ کے لیے آؤٹ پٹ سلیکٹر فیلڈز پر `memoize` اور `argsMemoize` ظاہر کیے گئے ہیں۔ - TypeScript: TypeScript ورژن 4.7 سے نیچے کی سپورٹ ختم کر دی گئی؛ آؤٹ پٹ سلیکٹرز کو نیسٹ کرنے کے لیے TypeScript کارکردگی بہتر کی گئی، نیسٹنگ کی حد تقریباً 8 سے بڑھا کر تقریباً 30 کر دی گئی، جس سے گہرے ٹائپ انسٹینشیشن کی غلطیاں کم ہوتی ہیں۔ - API: رن ٹائم غلطیوں کے خطرے کی وجہ سے `createStructuredSelector` کا دوسرا اوورلوڈ ہٹا دیا گیا۔ - اضافی خصوصیات: آؤٹ پٹ سلیکٹر فیلڈز پر `dependencyRecomputations` اور `resetDependencyRecomputations`؛ `inputStabilityCheck` ڈیولپمنٹ ٹول جو ان پٹ سلیکٹرز کو ایک ہی دلائل کے ساتھ دو بار چلاتا ہے اور اگر نتائج مختلف ہوں تو خبردار کرتا ہے؛ `identityFunctionCheck` ڈیولپمنٹ ٹول جو چیک کرتا ہے کہ آیا ریزلٹ فنکشن اپنا ان پٹ لوٹاتا ہے۔ - بریکنگ تبدیلیاں: `ParametricSelector` اور `OutputParametricSelector` ٹائپس ہٹا دی گئیں، ان کی فعالیت `Selector` اور `OutputSelector` میں ضم کر دی گئی۔ پروجیکٹ MIT لائسنس کے تحت ہے۔ یہ اصل میں NuclearJS میں گیٹرز، re-frame میں سبسکرپشنز، اور Redux کی ایک تجویز سے متاثر تھا۔