Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

760
Views
UseState no se actualiza dentro del método de espera

Lo que mi código está tratando de hacer es obtener una variedad de objetos haciendo múltiples solicitudes de obtención. Luego envío la respuesta.datos a la variable setPokemonTeam y no funciona. Cada vez que registro la matriz en la consola, aparece vacía.

 const [pokemonTeam, setPokemonTeam] = useState([]); const generatePokemon = async () => { setPokemonTeam([]); const pokemonIDs = []; do { const randomID = Math.floor(Math.random() * 121); if (!pokemonIDs.includes(randomID)) { pokemonIDs.push(randomID); } } while (pokemonIDs.length < 6); //max 6 pokemon only let promises = []; for (var i = 0; i < pokemonIDs.length; i++) { promises.push( await axios .get(`https://pokeapi.co/api/v2/pokemon/${pokemonIDs[i]}/`) .then((res) => { setPokemonTeam([...pokemonTeam, res.data]); console.log(res.data); console.log(pokemonTeam); }) .catch((err) => { console.log(err); }) ); } Promise.all(promises); console.log(pokemonTeam); };

mi consola obtiene los datos correctos pero no actualiza la matriz pokemonTeam .

Así es como se ve mi consola

Este es el código con cada línea incluida

about 4 years ago · Santiago Gelvez
3 answers
Answer question

0

Usa useEffect(()=>console.log(pokemonTeams), [pokemonTeams]) antes de esta función.

Además, eche un vistazo a React Hooks y UseEffect

about 4 years ago · Santiago Gelvez Report

0

Por favor, compruebe si esto es útil para usted.

 import React, {useState, useEffect} from 'react' import ReactDOM from 'react-dom' import axios from 'axios' function App() { const [pokemonTeam, setPokemonTeam] = useState([]) let pokemonIDs = [] do { const randomID = Math.floor(Math.random() * 121) if (!pokemonIDs.includes(randomID)) { pokemonIDs.push(randomID) } } while (pokemonIDs.length < 6) useEffect(() => { for (var i = 0; i < pokemonIDs.length; i++) { axios .get(`https://pokeapi.co/api/v2/pokemon/${pokemonIDs[i]}`) .then((res) => { setPokemonTeam((prev) => [...prev, res.data]) }) .catch((err) => { console.log(err) }) } }, []) console.log(pokemonTeam) return 'Hello' } ReactDOM.render(<App />, document.getElementById('root'))
about 4 years ago · Santiago Gelvez Report

0

El valor predeterminado de pokemonTeam es "[]" línea 1 (establecido en useState):

 const [pokemonTeam, setPokemonTeam] = useState([]);

Tienes que quitar la linea 3

 setPokemonTeam([]);

Para evitar recargar su componente antes de que la solicitud asíncrona termine de ejecutarse

about 4 years ago · Santiago Gelvez Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!