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

175
Views
Gestión de estado de React: renderizaciones con useEffect

Ok para explicar mi problema en breve. Estaba siguiendo un tutorial de piedra, papel o tijera, pero cuando lo terminé, comencé a implementar cosas por mi cuenta. No soy nuevo en React, pero también tengo mucho que aprender todavía. Quiero entender completamente la gestión estatal. Una explicación rápida:

Este es un juego de piedra, papel o tijera, en el que el usuario puede hacer clic en los botones que representan la piedra, el papel y la tijera, y el mismo botón que recibe la entrada del usuario, también genera una selección aleatoria de computadora entre esos 3. (función handleClick)

Luego tengo un useEffect que compara la elección del usuario y la computadora, y luego aumento los puntos del usuario o la computadora en 1, a quien haya ganado esa ronda. Cuando los puntos de cualquiera de ellos llegan a 5, el juego termina y aparece un botón de reinicio.

Y ahora mi problema:

Cuando agrego la lógica condicional en el useEffect que ve si alguno de ellos alcanzó los 5 puntos, mi clic siempre está 1 detrás. Estoy configurando un estado para el fin del juego, que es falso en la carga de la aplicación y se establece en verdadero cuando se cumple la condición. Entonces, en este caso, llegará a 5, pero el botón de reinicio aparecerá en el próximo clic.

PERO, si agrego la lógica al JSX en su lugar, sin usar el estado, el botón de reinicio se muestra exactamente en la ronda 5, que es la forma correcta.

Ahora, investigué mucho, y sé que setState es asíncrono, y se evaluará en el próximo renderizado... pero no entiendo por qué lo hace si lo pongo en useEffect, que también tiene la dependencia matriz, que activará una nueva representación si cambia el estado. Incluso cuando pongo el 'gameOver' en la matriz de dependencia, todavía no funciona

Me falta información clave para poner todo el rompecabezas en su lugar.

Puedes encontrar el código aquí, no es muy largo.

https://www.codepile.net/pile/6PO6m8GN

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

si desea activar una nueva representación, puede usar la matriz de dependencia de useEffect. Por lo tanto, si desea activar useEffect cuando cambia la computadora o el punto de usuario, agréguelos dentro de su matriz de dependencia useEffect.

Este tipo lo explica perfectamente: https://www.youtube.com/watch?v=dH6i3GurZW8&t=1106s

about 4 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 Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!