में केवल एक बार सब्सक्राइब करें मैं ngrx स्टोर को देखना शुरू कर रहा हूं और मुझे कोणीय एसिंक पाइप का उपयोग करने की सुविधा दिखाई देती है। साथ ही मुझे यकीन नहीं है कि कोणीय एसिंक पाइप का व्यापक रूप से उपयोग करना अच्छा विकल्प है या नहीं।NgrxStore और कोणीय - एसिंक पाइप का बड़े पैमाने पर उपयोग करें या कन्स्ट्रक्टर
मैं एक साधारण उदाहरण बना देता हूं। आइए मान लें कि उसी टेम्पलेट में मुझे किसी ऑब्जेक्ट (उदा। एक व्यक्ति) के विभिन्न विशेषताओं को दिखाने की आवश्यकता है जिसे स्टोर से पुनर्प्राप्त किया जाता है। जबकि घटक वर्ग निर्माता
export class MyComponent {
person$: Observable<Person>;
constructor(
private store: Store<ApplicationState>
) {
this.person$ = this.store.select(stateToCurrentPersonSelector);
}
.....
.....
}
होता
टेम्पलेट कोड का एक टुकड़ा
<div>{{(person$ | async).name}}</div>
<div>{{(person$ | async).address}}</div>
<div>{{(person$ | async).age}}</div>
हो सकता है जहां तक मैं समझता हूँ कि इस कोड को 3 सदस्यता (async के माध्यम से टेम्पलेट में किए गए तात्पर्य पाइप) एक ही पर्यवेक्षक (person$
) के लिए।
एक वैकल्पिक MyComponent में है कि संपत्ति भरता 1 संपत्ति (person
) को परिभाषित करने और केवल 1 सदस्यता (निर्माता में) के लिए, इस तरह के रूप
export class MyComponent {
person: Person;
constructor(
private store: Store<ApplicationState>
) {
this.store.select(stateToCurrentPersonSelector)
.subscribe(person => this.person = person);
}
.....
.....
}
जबकि टेम्पलेट मानक संपत्ति बाध्यकारी (का उपयोग करता होगा async पाइप के बिना यानी), जैसे
<div>{{person.name}}</div>
<div>{{person.address}}</div>
<div>{{(person.age}}</div>
अब प्रश्न
क्या 2 दृष्टिकोणों के बीच प्रदर्शन के मामले में कोई अंतर है? कोड की दक्षता को प्रभावित करने के लिए एसिंक पाइप (यानी सब्सक्रिप्शन का भारी उपयोग) का भारी उपयोग है?
धन्यवाद किसी भी मार्गदर्शन के लिए अग्रिम
आप 'गूंगा' घटकों के इनपुट पर कंटेनरों में एसिंक पाइप का उपयोग करने पर विचार करना चाहेंगे। ['Example-app'] (https://github.com/ngrx/example-app/tree/master/src/app) में घटक और कंटेनर देखें और [* प्रेजेंटेशनल और कंटेनर घटक *] (https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0)। – cartant