Sobes.tech
Middle

რატომ არ უნდა გამოიყენოთ async onCreated (created) ჰუქში? სად არის უფრო სწორია ასინქრონული მოთხოვნების გაკეთება?

sobes.tech AI

პასუხი AI-სგან

Vue.js (विशेषतः Vue 2) मा created फंक्शनलाई असिंक्रोनस (async) बनाउने सल्लाह दिइँदैन, किनभने Vue जीवन चक्रहरूमा promises-लाई अपेक्षा गर्दैन, र यसले कम्पोनेन्टको अनिश्चित व्यवहारमा पुर्‍याउन सक्छ। created भित्रको असिंक्रोनस कोड सही तरिकाले ह्यान्डल हुँदैन, र कम्पोनेन्टको अवस्था रेंडरिङको समयमा तयार नहुन सक्छ।

अधिक उचित भनेको mounted हुकमा असिंक्रोनस अनुरोधहरू गर्नु हो, जुन कम्पोनेन्ट DOM मा माउन्ट भएपछि कल हुन्छ। यसले सुनिश्चित गर्दछ कि सबै प्रतिक्रियाशील सम्पत्तिहरू र टेम्प्लेट पहिले नै इनिसियलाइज्ड छन्, र जवाफ प्राप्त भएपछि डेटा सुरक्षित रूपमा अपडेट गर्न सकिन्छ।

उदाहरण:

export default {
  data() {
    return { items: [] };
  },
  mounted() {
    fetch('/api/items')
      .then(response => response.json())
      .then(data => {
        this.items = data;
      });
  }
}

यदि तपाईं Vue 3 र Composition API प्रयोग गर्दै हुनुहुन्छ भने, असिंक्रोनस अपरेशन्स सामान्यतया onMounted वा setup भित्र async functions प्रयोग गरेर गरिन्छ, तर प्रतिक्रियाशीलताको विशेषताहरूलाई ध्यानमा राख्दै।