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

304
Visualizações
¿Por qué el valor que se muestra no está sincronizado con el valor registrado en la consola?

¿Alguien puede decirme por qué al hacer clic en el botón, el valor que se envía a la consola siempre es una unidad más pequeña que la que se muestra en la pantalla? Los valores no están sincronizados como se esperaba.

Ejemplo a continuación en React

En Niño:

 import React, {useState } from "react"; export const ChildComp = ({getNumProps}) => { const [num, setNum] = useState(0); const onPlusClick = () => { if (num< 12) { setNum(num + 1);// num does not increase immediately after this line, except when focus reenters here on second method call } getNumProps(num); } return( <div> <button onClick={onPlusClick}> Click to increment </button> {num} </div> ); }

en padre

 import { ChildComp } from "./ChildComp" export const ParentComp = () => { const getNum= (num) => { console.log(num); } return (<ChildComp getNumProps={getNum}/>) }

La página inicialmente muestra 0

  • Cuando hago clic una vez, el número aumenta a 1, pero la consola muestra 0
  • Cuando hago clic una vez, el número aumenta a 2, pero la consola muestra 1. Debería ver en la consola lo mismo que se muestra en la página.

Agradecería si puede dejar un comentario sobre cómo se puede mejorar la pregunta.

Este es un ejemplo de comunicación entre padres e hijos. Además, cualquier objeción sobre los estándares utilizados, hágamelo saber.

Gracias.

Actualización: me doy cuenta de que los valores estarían sincronizados si en lugar de getNumProps(num); Hice getNumProps(num + 1); pero eso no cambia el hecho de que previamente en esta línea setNum(num + 1); , como ya se señaló en el comentario, num no aumenta inmediatamente después de esta línea, excepto cuando el foco vuelve a ingresar aquí en la segunda llamada al método. No estoy seguro de por qué.

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

0

La función prop getNumProps es un efecto secundario y debe colocarse en un gancho, en lugar de dentro de esa función onPlusClick .

En su lugar, haz esto:

 useEffect(() => { getNumProp(num); }, [num]);

Alternativamente, para evitar el error: "React Hook useEffect has a missing dependency: 'getNumProps'. Consulte este documento sobre el uso del gancho useCallback

 const callback = useCallback(() => { getNumProp(num); }, [num]); function onPlusClick(...) { ... callback(); }

El cambio al estado de num provocará una nueva representación del componente secundario, no del principal.

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