• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

177
Views
¿Cómo puedo volver a obtener una API automáticamente hasta que los datos se obtengan correctamente?

Tengo una API que a veces no funciona. Me gustaría que la aplicación vuelva a buscar automáticamente si esto sucede hasta que obtenga los datos necesarios. ¿Cómo puedo hacer eso? Estoy pensando que tal vez esto podría hacerse usando una dependencia en el gancho useEffect , pero no tengo claro cómo hacerlo.

Digamos que tenemos este componente de aplicación

 export default function App() { const [data, setData] = useState([]) useEffect(() => { getData({ setData }) }, []) return [ <h3> {data[0].title} </h3> ] }

Y este componente API

 const url = 'https://some-random-url.com/whatever-api' export default function getData({ setData }) { axios.get(url) .then((response) => { let dataArray = response.data.results setData(dataArray) }) .catch((error) => { console.log(error) }) }
almost 3 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Si tuviera que hacerlo con useEffect , podría pasar un estado de contador de errores a la función getData y aumentarlo en caso de error o datos vacíos. Luego agregue a su matriz de dependencia useEffect para recuperar. Pero esto ciertamente implica que debe pensar más en lo que desea hacer después de una cierta cantidad de reintentos, para evitar un bucle infinito.

 export default function App() { const [data, setData] = useState([]) const [errCount, setErrCount] = useState(0) useEffect(() => { getData({ setData, errCount, setErrCount }) }, [errCount]) return [ <h3> {data[0].title} </h3> ] }

Y este componente API

 const url = 'https://some-random-url.com/whatever-api' export default function getData({ setData, errCount, setErrCount }) { axios.get(url) .then((response) => { let dataArray = response.data.results setData(dataArray) !dataArray.length && setErrCount(errCount+1); }) .catch((error) => { setErrCount(errCount+1); console.log(error) }) }
almost 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error