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

104
Vistas
¿Por qué ejecutar una devolución de llamada desde useEffect imprime el valor incorrecto?

Estoy tratando de entender este extraño comportamiento:

 const [counter, setCounter] = useState<number>(1); useEffect(() => { setCounter(2); setTimeout(function () { console.log('counter = ', counter); // => counter = 1 }, 1000); }, []);
about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Se llamará a su efecto cuando su componente se monte por primera vez, porque está pasando una matriz vacía de deps ... donde su variable de counter es 1

La función setCounter es una función async , la interfaz de usuario react-native ui insertará esa llamada en la pila de llamadas de función que se supone que deben llamarse en orden, pero la primera llamada de función insertada en esa pila de llamadas es su console.log , con un copia del valor de la variable de counter que es 1

Si desea imprimir el valor actualizado de counter , coloque counter en la lista de deps como:

 const [counter, setCounter] = useState<number>(1); useEffect(() => { setCounter(2); }, []); useEffect(() => { setTimeout(function () { console.log('counter = ', counter); // => counter = 1 }, 1000); }, [counter]);
about 4 years ago · Santiago Trujillo Denunciar

0

Lo que vale la pena mencionar es que está utilizando el valor del estado del contador dentro de useEffect. Esto está dirigido por ESLint con la configuración predeterminada. Su efecto de uso depende de ese estado y debe agregarse a la matriz de dependencia. [Error de ESLint] [1]

Este uso correcto de useEffect haría que useTimeout se ejecutara 2 veces. En el renderizado inicial y después del renderizado. [1]: https://i.stack.imgur.com/yiLJi.png

about 4 years ago · Santiago Trujillo 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