मुझे लाइव फीड के माध्यम से बैक एंड (डीजेंगो रेस्ट) से अनंत छवियां प्राप्त हो रही हैं, हर बार लाइव फीड अलग अनूठी छवि देता है और मैं एक घटक के एक div में प्रतिक्रिया में दिखाना चाहता हूं, हर बार एक छवि प्रतिक्रिया में आती है और मैं इसे दिखाना चाहता हूं एक घटक का एक div, पहले मैंने एक अनंत फ़ंक्शन की कोशिश की है जो एपीआई को असीमित रूप से अनुरोध भेजता है और प्रतिक्रिया में हर बार एकल छवि प्राप्त करता है लेकिन इस तरह से पूरा पृष्ठ पुनः लोड होता है, मैं केवल div को पुनः लोड करना चाहता हूं जिसमें छवियां बैकएंड से आती हैं और बिना पुनः लोड किए परिवर्तन पूरा पृष्ठ, इसके लिए सबसे अच्छा तरीका क्या हो सकता है?

runInfinite=()=>{

        axios.post('http://127.0.0.1:8000/faceapp/process_image/')
            .then(res => {
                this.setState({baseimage: res.data})
            });
    };

render(){
          if (this.state.flag){           // flag will always be true for infinite run
            this.runInfinite()
        }
return(   
         <div>
           {this.state.baseimage?<img  src={"data:image/png;base64," +  this.state.baseimage}/>:<h1>Hello</h1>}  // get image(single) from request's response
         </div>
)
}

मैं पूरे घटक को पुनः लोड किए बिना अनुरोध से छवि कैसे प्राप्त कर सकता हूं और क्या इसे पूरा करने के लिए कोई अन्य बेहतर तरीका हो सकता है?

0
Nabeel Ayub 6 नवम्बर 2019, 16:28

1 उत्तर

बेहतर तरीका यह है कि आपको सॉकेट्स का उपयोग करना चाहिए। लेकिन अगर यह आपके लिए आवश्यक नहीं है, तो आप विशिष्ट अंतराल का उपयोग करके रनइनफिनिटी () विधि को कॉल कर सकते हैं:

render(){
   if (this.state.flag){
        setInterval(()=> { this.runInfinite(); }, 1000);
   }
}

वह समय निर्दिष्ट करें जो आपके लिए उपयुक्त हो।

2
Swapnil N 6 नवम्बर 2019, 16:50