इस प्रोजेक्ट के बारे में

Reselect एक लाइब्रेरी है जो memoized "selector" फ़ंक्शन बनाने के लिए है। यह आमतौर पर Redux के साथ उपयोग की जाती है, लेकिन इसे किसी भी सादे JavaScript immutable data के साथ भी उपयोग किया जा सकता है। README में वर्णित मुख्य विशेषताएँ: - Selectors derived data की गणना कर सकते हैं, जिससे Redux न्यूनतम संभव state संग्रहीत कर सकता है। - Selectors कुशल होते हैं: जब तक इसके किसी argument में परिवर्तन न हो, selector की पुनर्गणना नहीं होती। - Selectors composable होते हैं: इन्हें अन्य selectors के input के रूप में उपयोग किया जा सकता है। परियोजना उद्देश्य, motivation और सामान्य उपयोग पैटर्न की पृष्ठभूमि के लिए Redux दस्तावेज़ के selectors के साथ data व्युत्पन्न करने वाले पृष्ठ की ओर संकेत करती है, जिसमें React-Redux के साथ उपयोग भी शामिल है। स्थापना विकल्प: - Redux Toolkit: Reselect पहले से ही आधिकारिक Redux Toolkit पैकेज में डिफ़ॉल्ट रूप से शामिल है, इसलिए आगे किसी स्थापना की आवश्यकता नहीं है। इसे `@reduxjs/toolkit` से `createSelector` के रूप में import किया जा सकता है। - Standalone: npm, Yarn, या pnpm के माध्यम से `reselect` पैकेज स्थापित करें। दस्तावेज़ reselect.js.org पर होस्ट किया गया है और इसमें परिचय, Reselect कैसे काम करता है इसका स्पष्टीकरण, `createSelector`, `createSelectorCreator`, `createStructuredSelector`, केवल विकास-समय जाँच, `lruMemoize`, और `weakMapMemoize` के लिए API संदर्भ, साथ ही FAQ शामिल है। मूल उपयोग: `createSelector` एक या अधिक input selectors स्वीकार करता है जो arguments से मान निकालते हैं, और एक result function जो निकाले गए मान प्राप्त करता है और व्युत्पन्न मान लौटाता है। उत्पन्न output selector केवल तभी पुनर्गणना करता है जब निकाले गए मान बदलते हैं। README में एक उदाहरण शामिल है जो दर्शाता है कि एक सादा selector हर कॉल पर चलता है, जबकि एक memoized selector पुनर्गणना छोड़ देता है और जब inputs अपरिवर्तित होते हैं तो मौजूदा result reference लौटाता है। यह reference स्थिरता React-Redux और React जैसी लाइब्रेरीज़ के लिए महत्वपूर्ण बताई गई है जो UI अपडेट को अनुकूलित करने के लिए reference equality जाँच पर निर्भर करती हैं। README शब्दावली को परिभाषित करता है: selector function, input selectors, output selector, result function, और dependencies। संस्करण 5.0.0 में वर्णित परिवर्तन: - Customization: `createSelectorCreator` के लिए options object जिसमें customized `memoize` और `argsMemoize` फ़ंक्शन और उनके options होते हैं; `createSelector` `memoize` और `argsMemoize` के सीधे customization का समर्थन करता है। - Memoization: नया डिफ़ॉल्ट memoization फ़ंक्शन `weakMapMemoize`; `memoize` और `argsMemoize` डिबगिंग के लिए output selector फ़ील्ड्स पर उपलब्ध कराए गए हैं। - TypeScript: TypeScript संस्करण 4.7 से नीचे के समर्थन को बंद कर दिया गया; nested output selectors के लिए TypeScript प्रदर्शन में सुधार, जिसमें nesting सीमा लगभग 8 से बढ़ाकर लगभग 30 कर दी गई, जिससे deep type instantiation त्रुटियाँ कम हुईं। - API: runtime त्रुटियों की संभावना के कारण `createStructuredSelector` के दूसरे overload को हटा दिया गया। - अतिरिक्त सुविधाएँ: output selector फ़ील्ड्स पर `dependencyRecomputations` और `resetDependencyRecomputations`; `inputStabilityCheck` विकास उपकरण जो input selectors को समान arguments के साथ दो बार चलाता है और यदि परिणाम भिन्न होते हैं तो चेतावनी देता है; `identityFunctionCheck` विकास उपकरण जो जाँचता है कि result function अपना input लौटाता है या नहीं। - Breaking changes: `ParametricSelector` और `OutputParametricSelector` प्रकार हटा दिए गए, उनकी कार्यक्षमता `Selector` और `OutputSelector` में एकीकृत कर दी गई। परियोजना MIT लाइसेंस के अंतर्गत है। यह मूल रूप से NuclearJS में getters, re-frame में subscriptions, और एक Redux proposal से प्रेरित था।