【发布时间】:2022-01-02 20:46:40
【问题描述】:
我想从 API 获取数据并映射响应以显示它。
import React from 'react'
import { useState, useEffect } from 'react'
import axios from 'axios'
export default function Nav() {
const options = {
method: 'GET',
url: 'url',
headers: {
'x-rapidapi-host': 'host',
'x-rapidapi-key': 'key'
}
}
const [allCoins, setAllCoins] = useState([])
useEffect(() => {
axios.request(options)
.then(res => setAllCoins(res.data.data.coins))
.catch(err => console.error(err))
}, [])
return (
<nav>
{allCoins.map(el => {
<img src={el.iconUrl} alt="" />
<h2>{el.name}</h2>
<span>{el.symbol}</span>
})}
</nav>
)
}
但是什么都没有显示。我知道这是一个异步问题,我必须等待状态中的数据才能映射它,但我不知道该怎么做,我也没有在谷歌上找到解决方案。
【问题讨论】:
-
您所展示的内容似乎是合理的。您是否在控制台中收到任何错误? API 的实际响应是什么?
-
我在控制台中没有收到错误,我得到了数据,但只有在执行返回之后才显示任何内容。
-
然后当你 setAllCoins 组件应该用新数据重新渲染。
标签: reactjs api axios use-effect