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

223
Vistas
Reaccionar, el estado no se actualiza al llamar al setState relacionado

Estoy tratando de obtener imágenes de una Unsplash API y luego intento actualizar los datos de las imágenes usando useState en el siguiente código.

 const [images, setImages] = useState([]); useEffect(() => { Axios.get( "https://api.unsplash.com/photos/?client_id=l2U-D_PXXujBJoRiCCMCL2ifi_5ZJcK4AC0WH-A2lKk" ) .then((res) => { //res.data is printing correct/expected value console.log(res.data); setImages(res.data); console.log("lul"); //but images array is still empty console.log("images: ", [images]); // [] }) .catch((err) => console.error(err)); }, []);

Si coloco la matriz de imágenes en la matriz de dependencia, entonces puedo actualizar la matriz de imágenes, pero luego la búsqueda se produce infinitamente.

¿Por qué está pasando esto?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Lo que está haciendo mal es que está intentando console.log antes de que React se haya vuelto a procesar. Actualizar un state a través del setState relacionado no es instantáneo, es una tarea asíncrona. Es necesario volver a renderizar para obtener el valor actualizado. Vea el código a continuación, agregué comentarios.

También es una mala idea poner images en la matriz de dependencias, obtendrá un bucle infinito.

 const [images, setImages] = useState([]); console.log("images: ", [images]); // you get [] for the first time, and after state change and re-render, it will contains the fetched data. useEffect(() => { Axios.get( "https://api.unsplash.com/photos/?client_id=l2U-D_PXXujBJoRiCCMCL2ifi_5ZJcK4AC0WH-A2lKk" ) .then((res) => { setImages(res.data); }) .catch((err) => console.error(err)); }, []);
about 4 years ago · Juan Pablo Isaza Denunciar

0

setState se invoca de forma asíncrona (aunque no devuelve una promesa, por lo que no puede await ).

Mantenga su useEffect como está ahora, y para imprimir el nuevo valor cada vez que cambien las images , puede usar otro useEffect :

 useEffect(() => { console.log("images: ", [images]); // [] }, [images]);
about 4 years ago · Juan Pablo Isaza 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