Reactjs 无法获取NewsApi数据以显示在React中

Reactjs 无法获取NewsApi数据以显示在React中,reactjs,api,axios,react-hooks,Reactjs,Api,Axios,React Hooks,我无法显示我的新闻Api数据。。。 错误消息:“TypeError:无法读取未定义的属性“map” 从新闻容器文件。” 我认为我从新Api中提取数据的方式有问题 news-api.js文件: news-container.js文件: import React,{useffect,useState}来自“React”; 从“./newsapi”导入{getNews}; 从“/NewsCard.js”导入新闻卡; 函数newscanner(){ const[news,setNews]=useStat

我无法显示我的新闻Api数据。。。 错误消息:“TypeError:无法读取未定义的属性“map” 从新闻容器文件。”

我认为我从新Api中提取数据的方式有问题

news-api.js文件: news-container.js文件:
import React,{useffect,useState}来自“React”;
从“./newsapi”导入{getNews};
从“/NewsCard.js”导入新闻卡;
函数newscanner(){
const[news,setNews]=useState([]);
useffect(()=>{
getNews()。然后(data=>setNews(data));
}, []);
returnnews.map(article=>);
}
导出默认新闻容器;
news-card.js文件:
从“React”导入React;
导入“/card.css”;
功能新闻卡(道具){
返回(
{props.article.title}
{props.article.description}文本

); } 导出默认的新闻卡;
您需要更改以下内容:

return  news.map(article =>
  <NewsCard  props={article} />)
}
returnnews.map(article=>
)
}
为此:

return  news.article.map(item =>
  <NewsCard  props={item} />)
}
returnnews.article.map(item=>
)
}

因为您将对象设置为状态而不是项目数组。只需检查您的响应。

您必须访问Axios响应的
数据
,才能获得实际的响应负载

import axios from "axios";

export const getNews = async () => {
  const response = await axios.get("https://newsapi.org/v2/everything?q=bitcoin&from=2019-12-15&sortBy=publishedAt&apiKey=...");
  return response.data;
};

请不要在问题中发布您的API凭据,我已为此提交了一个编辑。完整的API密钥仍在编辑历史记录中,因此最好撤销该密钥并生成一个新密钥。@cyberAnn您是否在API请求响应中获得数据?@VahidAkhtar是的,我收到响应,我可以看到对象,但只有在我映射数据之前。@cyberAnn是数组还是对象?我做了更改,但仍然收到相同的错误消息。在不知道响应数据的形状的情况下,很难进一步提供帮助。如果我删除映射(),则会显示响应数据。数据看起来像:newsapi.orgI上的数据进行了更改,但我仍然会收到相同的错误消息您需要在任何地方都这样做。如果仍然有问题,请为我创建sanbox和json响应对象,这样我可以帮助您。它只在一个地方。。。我不知道如何创建沙箱。。。响应数据如下所示:www.newsapi.org是否有人在github上查看我的代码?您可以在此处实现代码:
return  news.map(article =>
  <NewsCard  props={article} />)
}
return  news.article.map(item =>
  <NewsCard  props={item} />)
}
import axios from "axios";

export const getNews = async () => {
  const response = await axios.get("https://newsapi.org/v2/everything?q=bitcoin&from=2019-12-15&sortBy=publishedAt&apiKey=...");
  return response.data;
};