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

97
Visualizações
Usar efecto activado varias veces

Estoy tratando de hacer un setState simple en un botón con un contador y aplicar un color de fondo diferente según su estado. Funciona perfectamente para los primeros 3 clics de botón y en el cuarto y así sucesivamente hace esto: registro de contador

Aquí está el código:

 useEffect(() => { const changePower = () => { if (power === 'on') { document.getElementById('btn-trigger').style.backgroundColor = "red"; setPower('off'); } else if (power==='off') { document.getElementById('btn-trigger').style.backgroundColor = "lime"; setPower('on'); } setCount(count + 1); } document.getElementById('btn-trigger').addEventListener('click', changePower); console.log(count); }, [power])

Cualquier ayuda sería increíble, ¡Gracias!

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Si configura Power en useEffect, se activará solo.

 useEffect(() => { if(count%2) document.getElementById('btn-trigger').style.backgroundColor = "red"; else document.getElementById('btn-trigger').style.backgroundColor = "lime"; }, [count]) const handeClick = () => { setCount(count + 1); }
about 4 years ago · Juan Pablo Isaza Relatório

0

está configurando el valor de "potencia" por "setPower" dentro de un efecto de uso que está escuchando los cambios en "potencia".

about 4 years ago · Juan Pablo Isaza Relatório

0

Necesitas limpiar los eventos:

 useEffect(() => { const changePower = () => { if (power === 'on') { document.getElementById('btn-trigger').style.backgroundColor = "red"; setPower('off'); } else if (power==='off') { document.getElementById('btn-trigger').style.backgroundColor = "lime"; setPower('on'); } setCount(count + 1); } document.getElementById('btn-trigger').addEventListener('click', changePower); console.log(count); return () => window.removeEventListener("click", changePower) <----- }, [power])

Además: la función changePower debe declararse fuera del useEffect . Usas el enlace useCallback aquí.

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