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

173
Vistas
React Hook useEffect datos de recuperación asíncrona que no pasan al componente de interfaz de usuario de material de información sobre herramientas

Quiero pasar datos después de obtener eso con efecto de uso en mi componente, después de un tiempo encontré el problema

Aquí algo de mi código

Tipos de datos de usuario (ACTUALIZADOS)

 export interface IUser { display_name: string; id: string; images: Image[]; } export interface Image { url: string; }

UseState (ACTUALIZADO)

 const [userData, setUser] = React.useState<IUser[]>([{ display_name: '', id: '', images: [{ url: '' }] }]); const token = useSelector((state: RootStateOrAny) => state.token.value);

Función GetCurrentUser

 const getCurrentUser = async (token: string) => { try { const response = await axios.get("https://api.spotify.com/v1/me", { headers: { Authorization: `Bearer ${token}` } }) return response.data } catch (e) { console.error(e) } }

función useEffect

yo uso asíncrono

 React.useEffect(() => { const get = async()=>{ const data = await getCurrentUser(token); setUser(data) } get(); },[])

mi componente principal

estoy usando la plantilla del componente de la barra de la aplicación de material ui y el problema proviene del componente secundario de información sobre herramientas que muestra el avatar

aquí mi código

 ... <Box sx={{ flexGrow: 1, justifyContent: 'end' }}> {console.log(userData)} //this line working and can pass the data <Tooltip title={userData.images[0].url}> // this line didnt working so if i pass to another child like avatar it cant work too, but if i delete the data code it will work properly <IconButton onClick={handleOpenUserMenu} sx={{ p: 0 }}> {/* {console.log(userData.images[0].url)} */} <Avatar alt="Remy Sharp" src='{}' /> </IconButton> </Tooltip> ... </Box> ...

El error

ingrese la descripción de la imagen aquí

Creo que el problema proviene de la reacción de la representación, porque en el exterior del componente de información sobre herramientas puede funcionar, pero cuando ingrese el componente de información sobre herramientas, renderizará el componente de información sobre herramientas primero antes del useEffect, por lo que los datos no están disponibles.

Estoy atascado en mi proyecto final para mostrar datos de perfil en la barra de aplicaciones porque no puedo resolver este problema: V, ¿alguien puede ayudarme con esto? ¡muchas gracias!

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Por lo que puedo decir, ha declarado que userData es una matriz.

 export interface IUser { display_name: string; id: string; images: Image[]; } export interface Image { url: string; }

...

 const [userData, setUser] = React.useState<IUser[]>([{ display_name: '', id: '', images: [{ url: '' }], }]);

En el retorno de representación, el código accede al estado de datos de userData como si fuera un objeto. console.log(userData) está bien ya que es solo el valor de estado completo, pero userData.images no está definido. Sin embargo, acceder userData.images solo está bien, es cuando el código intenta acceder al índice 0 de este valor indefinido que se produce el error.

Sospecho que querías acceder primero a userData[0].images , luego userData[0].images[0] .

código

 console.log(userData); ... <Box sx={{ flexGrow: 1, justifyContent: 'end' }}> <Tooltip title={userData[0].images[0].url}> <IconButton onClick={handleOpenUserMenu} sx={{ p: 0 }}> <Avatar alt="Remy Sharp" src='{}' /> </IconButton> </Tooltip> ... </Box> ...
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