प्रतिक्रिया उपयोग स्टेट स्टेट्स का उपयोग करते समय मुझे एक समस्या है, समस्या यह है कि मैं चाहता हूं कि राज्य हर बार अपडेट करे जब मेरा एपीआई इसका मूल्य बदलता है, लेकिन जब घटक लोड होता है तो राज्य बदल जाता है, यहां उस हिस्से का कोड है जिसे मैं ' मुझे परेशानी हो रही है:

    const [partida,setPartida] = useState();

    const getNumero = ()=>{
        axios.get(`https://carta-rusa.herokuapp.com/routes/find/${localStorage.getItem('partidaId')}`)
        .then(res=>{
            setPartida(res.data.partida.jugadores.length)
        })
        .catch(err=>console.log(err));
    }
    useEffect(()=>{getNumero();},[])
2
Jonathan7 19 फरवरी 2021, 18:10

1 उत्तर

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

अगर /routes/find/ पर समापन बिंदु अलग-अलग समय पर अलग-अलग डेटा देता है, तो आपके पास 2 मुख्य विकल्प हैं:

  • लागू करने में सबसे आसान, लेकिन बहुत सुंदर नहीं: मतदान। उस समापन बिंदु के लिए समय-समय पर अनुरोध करें, जैसे हर 5 मिनट या हर 30 सेकंड या कुछ और।
useEffect(() => {
    const get = () => {
        axios.get(`https://carta-rusa.herokuapp.com/routes/find/${localStorage.getItem('partidaId')}`)
            .then(res => {
                setPartida(res.data.partida.jugadores.length)
            })
            .catch(err => console.log(err));
    };
    get();
    const intervalId = setInterval(get, 30000);
    return () => clearInterval(intervalId);
}, []);
  • अधिक सुरुचिपूर्ण समाधान: इसके बजाय सर्वर को अद्यतन मान भेजें। जब घटक माउंट हो जाता है, तो सर्वर के साथ WebSocket कनेक्शन स्थापित करें , और जब भी सर्वर बदलता है तो सर्वर नया डेटा भेजता है। क्लाइंट पर, सॉकेट संदेशों को सुनें, और जब कोई संदेश दिखाई दे, तो आवश्यकतानुसार स्थिति अपडेट करें।
0
CertainPerformance 19 फरवरी 2021, 18:16