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

223
Visualizações
reaccionar ¿cómo puedo cambiar un estado en función de un estado diferente, en la misma función
import React, {useState, useEffect} from 'react'; const Test = ( {numar}) => { const [likeStatus, setLikeStatus] = useState(true); const [likeNumber, setLikeNumber] = useState(100); const onLikeHandler = () => { setLikeStatus(prevState => !prevState); if(likeStatus){ setLikeNumber(prevState=> prevState +1) } else { setLikeNumber(prevState=>prevState-1); } } console.log(likeStatus); console.log(likeNumber); return <button className={`like ${likeStatus ? 'liked' : ""}`} onClick={onLikeHandler}>{`Like | ${ likeNumber}`}</button> } export default Test;

Estoy tratando de hacer un botón Me gusta que me gusta/no me gusta en función del clic.

¿Cómo puedo hacer que la segunda función de cambio de estado espere a que termine mi primera función de estado? Intenté usar un gancho de efecto de uso, y estoy usando likeStatus en la matriz de dependencia, pero por alguna razón, la función "diferente" se activa dos veces al actualizar"

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

0

La actualización de estado es asíncrona, y se accede al estado desde el cierre, que se recrea solo después de volver a renderizar, lo que significa que no puede establecer el estado y luego en la siguiente línea para esperar que obtendrá ese nuevo estado de inmediato, obtendrá un nuevo estado pero solo en la siguiente función call (después de que el elemento se vuelva a renderizar). La solución es preservar el nuevo estado en la variable temporal.

Reescribe esto:

 const onLikeHandler = () => { const newLikeStatus = !likeStatus; // Here you are preserving that new state in temp variable setLikeStatus(newLikeStatus); if(newLikeStatus){ setLikeNumber(prevState=> prevState +1) } else { setLikeNumber(prevState=>prevState-1); } }
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