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

167
Visualizações
TypeError: no se pueden leer las propiedades de undefined (leyendo 'mapa') cuando se llama desde una API

Realmente estoy atascado en un problema: si ejecuta el código a continuación, obtendrá un error "Error de tipo: no se pueden leer las propiedades de undefined (leyendo 'mapa')".

Cuando la consola cierra la sesión de la variable "elementos", obtengo 2 resultados como se muestra aquí: ingrese la descripción de la imagen aquí

El problema radica en el primer resultado, ya que está vacío. Pero, ¿alguien puede explicarme por qué este resultado está vacío y por qué produce 2 resultados?

Este código se tomó directamente de aquí y se modificó para adaptarse a lo que devuelve la API. Considere ejecutar este código para que pueda ver lo que quiero decir.

 import React, {useState, useEffect} from 'react'; import logo from './logo.svg'; import './App.css'; function App() { const [error, setError] = useState(null); const [isLoaded, setIsLoaded] = useState(false); const [items, setItems] = useState([]); useEffect(() => { fetch("http://www.7timer.info/bin/api.pl?lon=113.17&lat=23.09&product=astro&output=json") .then(res => res.json()) .then( (result) => { setIsLoaded(true); setItems(result); }, // Note: it's important to handle errors here // instead of a catch() block so that we don't swallow // exceptions from actual bugs in components. (error) => { setIsLoaded(true); setError(error); } ) }, []) if (error) { return <div>Error: {error.message}</div>; } else if (!isLoaded) { return <div>Loading...</div>; } else { return ( <ul> {items.dataseries.map(item => ( {console.log(item)} ))} </ul> ); } } export default App;
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Hay dos errores que pude ver.

  1. Uno de ellos es que los datos que está obteniendo son un objeto mientras lo configura inicialmente para que sea una matriz y también está usando la función de mapa que solo se puede usar en matrices.
  2. Inicialmente, su matriz no contiene dataseries y tampoco puede acceder a propiedades como esa en una matriz correcta (porque la matriz tiene índices por los cuales obtenemos el valor allí).

Entonces, lo que podría hacer es configurar esta función para que sea así

 useEffect(() => { fetch("http://www.7timer.info/bin/api.pllon=113.17&lat=23.09&product=astro&output=json") .then(res => res.json()) .then( (result) => { setIsLoaded(true); setItems(result.dataseries); }, // Note: it's important to handle errors here // instead of a catch() block so that we don't swallow // exceptions from actual bugs in components. (error) => { setIsLoaded(true); setError(error); } )}, [])

Y la función de retorno para ser algo como esto

 return ( <ul> {items.map(item => ( {console.log(item)} ))} </ul> );
about 4 years ago · Juan Pablo Isaza Relatório

0

Los elementos son una matriz, no el objeto, por ejemplo, [{...}, {...}] , la serie deseada está dentro del objeto, no de los elementos.

 <ul> {items.map(item => item.dataseries.map(ds=> ( {console.log(ds)} )))} </ul>
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