मैं Reactjs का उपयोग करके फ़ीड समाचार बना रहा हूं, लेकिन फिर भी, मैंने देखा है कि Axios डेटा को संसाधित करने के लिए मेरे ब्राउज़र फ़ीड में डेटा वापस नहीं कर रहा है, इस कोड में मुझे क्या याद आ रही है?

const browserFeed = async () => {  
    const response = await browse();
    console.log(response)
    setFeed(response.data.results);  // undefined
    setIntialized(true);  
  };


  export const browse = () =>  {
    axios.get('xxxxxxxxxxx').then((result) => {
      return result // undefined
    }).catch((error) => {
      return error;
    })
  }
2
ana osuna 11 फरवरी 2021, 08:55

1 उत्तर

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

आप प्रॉमिस axios.get रिटर्न वापस करने से चूक रहे हैं।

export const browse = () =>  {
  return axios.get('xxxxxxxxxxx').then((result) => {
    return result;
  }).catch((error) => {
    return error;
  });
};

आप केवल वादा वापस कर सकते हैं, हालांकि, आपको हल किए गए मूल्य को वापस करने के लिए किसी अन्य .then को श्रृंखलाबद्ध करने की आवश्यकता नहीं है।

export const browse = () =>  {
  return axios.get('xxxxxxxxxxx').catch((error) => {
    return error;
  });
};

और ईमानदार होने के लिए मुझे नहीं लगता कि आप यहां त्रुटि को पकड़ना और वापस करना चाहते हैं क्योंकि आपके घटक तर्क को सफलता मानने के लिए लिखा गया है। आप वादा वापस कर सकते हैं और किसी भी अस्वीकृत वादों को try/catch में संभाल सकते हैं।

export const browse = () =>  {
  return axios.get('xxxxxxxxxxx');
};

लेकिन यह थोड़ा उबाऊ है, साथ ही घटक में axios कॉल भी कर सकता है। try/catch में सभी फ़ेचिंग लॉजिक को घेर लें, हैप्पी सक्सेस ब्रांच में फीड सेट करें, सैड फेल्योर ब्रांच में कोई भी एरर स्टेट सेट करें, और इनिशियलाइज़्ड स्टेट को finally ब्लॉक में सेट करें ताकि कोई फर्क नहीं पड़ता पास/फेल आप इंगित कर सकते हैं कि डेटा प्राप्त किया गया था।

const browserFeed = async () => {
  try {
    const response = await axios.get('xxxxxxxxxxx');
    console.log(response)
    setFeed(response.data.results);
  } catch(error) {
    // set any error state
  } finally {
    setInitialized(true);
  }
};

यह किसी भी वादे-श्रृंखला सिंटैक्स के साथ async/await सिंटैक्स के मिश्रण से बचा जाता है, जिसे टाला जाना चाहिए।

0
Drew Reese 11 फरवरी 2021, 10:43