Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

116
Vistas
Advertencia: no se puede actualizar un componente (`Aplicación`) mientras se renderiza un componente diferente

Tengo una función llamada setScore( ) en mi componente de aplicación que se transmite como accesorios a mi componente emergente . Quiero llamar a la función UpdateScore( ) según una condición en mi componente emergente. Sin embargo, también quiero llamar al método setScore( ) basado en una condición, pero me da el error mencionado anteriormente.

 const Popup = ({user,correctLetters,wrongLetters,setPlayable,selectedWord, playAgain, currentQuestion, words, score, setScore, quitGame}) => { function UpdateScore() { if(!check){ check = true; setScore(score => (score + 1)); } }; if ((checkWin(correctLetters,wrongLetters,selectedWord) === 'win') && (currentQuestion < words.length -1)){ UpdateScore(); } else if((checkWin(correctLetters,wrongLetters,selectedWord) === 'win') && (currentQuestion === words.length -1 )){ UpdateScore(); }

Este no es el código completo, pero el problema principal es la llamada a setState( ) . Miré otras publicaciones y lo resolvieron envolviendo el método setState en un useEffect pero luego me da otro error :

No se puede renderizar useEffects condicionalmente.

¿Alguna idea de cómo puedo resolver esto?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Probablemente las siguientes obras:

 const isWin = checkWin(correctLetters, wrongLetters, selectedWord) === 'win' && currentQuestion <= words.length && !check; React.useEffect(() => { if (isWin) { check = true; setScore((score) => score + 1); } }, [isWin, setScore]);

Veo un problema con el check y tengo la sensación de que debería estar en un useRef.

about 4 years ago · Juan Pablo Isaza Denunciar

0

El problema es que está llamando a UpdateScore (que llama a setScore ) en el cuerpo del componente y no es así como funciona React. Si desea ejecutar if...else if en Popup first render, use un gancho useEffect de esta manera:

 useEffect(() => { if ((checkWin(correctLetters,wrongLetters,selectedWord) === 'win') && (currentQuestion < words.length -1)){ UpdateScore(); } else if((checkWin(correctLetters,wrongLetters,selectedWord) === 'win') && (currentQuestion === words.length -1 )){ UpdateScore(); } }, [correctLetters, wrongLetters, selectedWord, currentQuestion, UpdateScore]);

En realidad, este useEffect se activará cada vez que una de correctLetters, wrongLetters, selectedWord, currentQuestion, UpdateScore cambie su valor (pero los necesita como dependencias; de lo contrario, recibirá una advertencia sobre "dependencias faltantes").

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda