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

178
Visualizações
setState con retorno en TYPESCRIPT

Oops, mis amigos, tengo este "problema" cuando uso setState, como setState no es asíncrono, no puedo usarlo de la manera que quiero. Establecí el valor y cuando llamo a la función para devolver el valor regresa con "retraso". ¿Cómo resuelvo esto?

 const [quantityProduct, setQuantityProduct] = useState<number>(0); function addQuantity() { var soma = Number(quantityProduct) + 1; setQuantityProduct(soma); sendProduct() } function sendProduct() { console.log(quantityProduct) }

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

0

El problema es que las siguientes dos líneas son asíncronas. Lo que experimenta es que la segunda línea se ejecuta antes de completar la primera.

 setQuantityProduct(soma); sendProduct();

Quería llamar a sendProduct cuando se actualice la quantityProduct . Debería usar el gancho useEffect con quantityProduct en la matriz de dependencia.

Prueba como a continuación.

 const [quantityProduct, setQuantityProduct] = useState<number>(0); function addQuantity() { var soma = Number(quantityProduct) + 1; setQuantityProduct(soma); } function sendProduct() { console.log(quantityProduct); } useEffect(() => { sendProduct(); }, [quantityProduct]);

Segunda forma: llamando a la API dentro de la devolución de llamada setState

 function addQuantity() { setQuantityProduct((prevQuantity) => { var newQuantity = Number(prevQuantity) + 1; sendProduct(newQuantity); return newQuantity; }); }
about 4 years ago · Juan Pablo Isaza Relatório

0

"setState no es asíncrono"

Esto no es cierto. La documentación es clara en esto :

React puede agrupar varias llamadas setState() en una sola actualización para mejorar el rendimiento. Debido a que this.props y this.state pueden actualizarse de forma asíncrona, no debe confiar en sus valores para calcular el siguiente estado.

Debe usar el useEffect para observar cambios en el estado (pasar el estado que desea observar en una matriz de dependencia) y luego realizar una operación basada en ese cambio.

 const [quantityProduct, setQuantityProduct] = useState(0); function addQuantity() { const soma = Number(quantityProduct) + 1; setQuantityProduct(soma); } function sendProduct() { console.log(quantityProduct); } useEffect(() => { sendProduct(); }, [quantityProduct]);

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