Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

762
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda