reactjs - 在反应中循环数组
问题描述
我无法遍历此 api 并显示数据。您可以在这里查看示例 api https://api.coingecko.com/api/v3/search/trending。如果您能帮助我,我将不胜感激
界面
export interface Item {
id: string;
name: string;
symbol: string;
market_cap_rank: number;
thumb: string;
large: string;
score: number;
}
export interface Coin {
item: Item;
}
export interface ResponseObject{
coins: Coin[];
}
反应代码
const TRENDING = 'https://api.coingecko.com/api/v3/search/trending'
const Home = () => {
const [trending, setTrending] = useState<ResponseObject[]>([])
useEffect(() => {
axios.get<ResponseObject[]>(TRENDING).then((response) => {
setTrending(response.data)
console.log(response.data)
})
}, [])
return {response.coins?.map((p) => {
return <div>{p.item.name}
</div>;
}
export default Home
示例 API
{
"coins":[
{
"item":{
"id":"superfarm",
"name":"SuperFarm",
"symbol":"SUPER",
"market_cap_rank":235,
"thumb":"https://assets.coingecko.com/coi1613975899",
"large":"https://assets.coingecko.com/coins
"score":0
}
}
],
}
解决方案
问题是从 axios 你得到一个 ResponseObjects 数组,然后你将它设置为“趋势”字段。但是然后在您的 return 语句中,您将其视为单个对象...
也许你需要做类似的事情
return {trending[0].coins?.map((p) => {
return <div>{p.item.name}
</div>;
这样你就抓住了第一个项目。
此外,我不确定这是否是一个错误,但您的 return 语句引用了“then”子句内部的“response”,而它可能应该引用本地状态“trending”。
同样在您的 axios 调用中,您期望一个数组 ResponseObject[] 并且在您的 useState 中您期望一个数组...但是在您的“示例 Api”中,它似乎是一个对象。因此,也许在 axios 调用和 useState 中都将 ResponseObject[] 更改为 ResponseObject ,最后您的代码最终将如下所示:
const TRENDING = 'https://api.coingecko.com/api/v3/search/trending'
const Home = () => {
const [trending, setTrending] = useState<ResponseObject>({})
useEffect(() => {
axios.get<ResponseObject>(TRENDING).then((response) => {
setTrending(response.data)
console.log(response.data)
})
}, [])
return {trending?.coins?.map((p) => {
return <div>{p.item.name}
</div>;
}
推荐阅读
- android - Android React Native, page doesn't load when emulator debug mode is disabled
- safari - Safari Web Extension icon does not open popup from the overflow (>>) menu
- pine-script - Tradingview策略,当输入相反方向的订单时,许多订单正在退出
- c - 设置 X11 根窗口像素图
- opengl - gl_Position.z 在动画网格的片段着色器中使用时似乎不正确
- scala - 可以使用多态、可变参数抽象方法制作 Scala 特征吗?
- python - 保存文件的路径(Python)
- oracle - 将序列添加到现有表
- html - 按钮颜色和边框半径在手机上发生变化
- python - 有人可以从 Kivy WebView 本地主机服务器提供一些代码吗?