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

100
Views
Reaccionar useState Hook no actualiza el estado correctamente

Estoy trabajando en un proyecto de juego de memoria en React. Tengo una matriz de objetos pokemon (ya que los uso como entrada para el juego) y configuro el estado nextPokemon para que sea un objeto en un índice aleatorio en dicho pokemonsArray . Luego, estoy agregando el siguiente Pokémon a una matriz llamada renderizado de Pokémon, que asigno en la función de representación y creo un botón para cada uno de ellos. Ahora ya descubrí que si tengo varios configuradores de estado en un solo lugar, se agrupan en lotes y, por lo tanto, tiene sentido que mi matriz renderizada de Pokémon reciba un objeto vacío cuando le agrego nextPokemon , porque nextPokemon no ha sido evaluado todavía. Agregué mi código en la parte inferior, porque todavía tengo muchos problemas con él, que es:

a) entender por qué setNextPokemon no funciona, porque es el primer proceso en línea y ni siquiera depende del estado establecido previamente, por lo tanto, agruparlo junto con otros establecedores de estado no debería ser un problema

b) conocer cómo me ayudan las funciones de actualización ya que en setRenderedPokemon, usar, por ejemplo, "anterior => anterior + x" no ayuda; no confío en valores anteriores del mismo estado sino de otro estado

Puedes ver el código a continuación. Cualquier ayuda es apreciada.

 const [pokemonsArray, setPokemonArray] = useState(pokemons); const [score, setScore] = useState(0); const [renderedPokemon, setRenderedPokemon] = useState([]); const [nextPokemon, setNextPokemon] = useState({}); useEffect(() => { for (let i = 0; i < 9; i++) { if (score === 49) { return } else if (renderedPokemon.length == 0) { setNextPokemon(pokemonsArray[Math.floor(Math.random() * 49)]); setRenderedPokemon(nextPokemon); } } }

about 4 years ago · Juan Pablo Isaza
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!