मेरे पास एक आयनिक कोणीय ऐप है जो हर बार दृश्य बदलता है और आयनिक स्टोरेज में मूल्य संग्रहीत करता है।

प्रत्येक पृष्ठ में एक 'हेडर' घटक होता है जो भंडारण से इस मान को प्रदर्शित करने वाला होता है।

अंदर ngOnInit(){} मैं भंडारण और मूल्य अद्यतन से मूल्य प्राप्त करता हूं। हालांकि, यह प्रति पृष्ठ दृश्य में केवल एक बार करता है। इसलिए यदि मैं मुखपृष्ठ देखता हूं, उदाहरण के लिए, पृष्ठ 2 पर जाएं, और मुखपृष्ठ पर वापस जाएं, तो कोड फिर से निष्पादित नहीं होगा।

मुझे लगता है कि ऐसा इसलिए है क्योंकि जब आप दृश्य बदलते हैं तो पृष्ठ वास्तव में अनमाउंट नहीं होता है, और इसलिए 'पुन: निर्माण' करने का कोई कारण नहीं है।

constructor(){} केवल उस दृश्य के पहले निर्माण पर चलता है

ngOnInit() {} केवल उस दृश्य के लिए पहला init चलाता है

ionViewDidLoad() {} नहीं चलता क्योंकि यह एक दृश्य नहीं है और यह एक आयनिक पृष्ठ जीवन चक्र हुक है

मैं मूल रूप से एक एपीआई को कॉल करने, आयनिक स्टोरेज में मूल्य स्टोर करने का एक तरीका ढूंढ रहा हूं, और प्रत्येक पृष्ठ परिवर्तन पर, शीर्षलेख में मान अपडेट करें।

मैं सोच रहा था कि यह वेधशालाओं के साथ प्राप्त करने योग्य हो सकता है, लेकिन मुझे यकीन नहीं है कि यह आयनिक भंडारण के साथ कैसे काम करेगा।

या यहां तक ​​​​कि आयनिक दृश्य जीवनचक्र हुक में से किसी एक का उपयोग करके भंडारण से मूल्य प्राप्त करें और इसे एक प्रोप के रूप में हेडर में पास करें, लेकिन यह सिर्फ गन्दा लगता है।

भंडारण का उपयोग करने का कारण यह है कि शेष राशि का उपयोग कहीं और किया जाता है, न कि केवल शीर्षलेख में और यह मुझे कई बार कॉल करने से बचाता है यदि यह भंडारण में उपलब्ध है।

किसी भी सिफारिश की सराहना की

export class HeaderComponent {
  balance = 0.00;

  constructor(
    private storage: Storage,
  ) { }

  async ngOnInit() {
    this.storage.get('balance').then(data => {
      this.balance = data;
    });
  }
}
0
Oliver Evans 9 सितंबर 2020, 20:07

1 उत्तर

सबसे बढ़िया उत्तर

यदि आप सकारात्मक हैं कि HeaderComponent में ngOninit केवल एक बार फायरिंग कर रहा है, तो इसका मतलब है कि मार्ग परिवर्तन के बीच इसे नष्ट नहीं किया जा रहा है। यह समझ में आता है कि यदि आपका घटक आपके सभी विचारों में मौजूद है।

मैं आपकी एप्लिकेशन स्थिति को आपके ऐप घटकों में वितरित करने के लिए स्थानीय संग्रहण का उपयोग नहीं करूंगा। यदि आपकी ऐप स्थिति अपेक्षाकृत सरल है, तो वेधशालाएं जाने का रास्ता हैं। एक ऐसी सेवा बनाएं जो आपके आवेदन की स्थिति को एक अवलोकन योग्य में रखे। हर बार जब आप एपीआई से डेटा प्राप्त करते हैं, तो नए डेटा को देखने योग्य पर धकेलें। फिर अपने HeaderComponent में ngOnInit हुक में ऑब्जर्वेबल की सदस्यता लें ताकि आपके घटक डेटा को किसी भी समय परिवर्तन होने पर एप्लिकेशन स्थिति में स्वचालित रूप से सिंक किया जा सके।

2
Wesley 10 सितंबर 2020, 16:37