我正在使用RapidAPI的API通过axios请求API数据。
我使用相对简单的代码遵循RapidAPI中提供的所有文档。然而,当我记录值时,它会反复请求数据,这反过来又会提高我从RapidAPI的请求,并使用大量资源和金钱。我不知道如何只检索一次值。以下是我的代码。
我的React .tsx文件
const [sportsData, setSportsData] = useState()
const fetchSportsData = () => {
axios
.request(testApi)
.then((response) => {
setSportsData(response.data)
})
.catch((error) => {
console.log(error)
})
}
fetchSportsData()
console.log(sportsData)
我的API文件
export const testApi = {
method: 'GET',
url: 'https://api-football-v1.p.rapidapi.com/v3/timezone',
headers: {
'X-RapidAPI-Key': '-------removed on purpose ---------',
'X-RapidAPI-Host': 'api-football-v1.p.rapidapi.com'
}
}
我只是使用useState设置数据,但每次存储值时,它似乎都会重复重新渲染。我尝试了许多迂回的方法,但它似乎会一遍又一遍地重复请求。以前有人使用过RapidAPI的API吗?
1条答案
按热度按时间xxhby3vn1#
虽然我不知道为什么useState仍然会重复地使用axios检索API数据,但正如Sergey Sosunov所评论的,这是一种变通方法。
在React文件上
在开发模式下,useEffect将在加载时运行两次,这取决于您的API提供程序,这可能意味着每次加载时调用API两次,这可能会使您的成本不必要地增加一倍,这只会发生在react文档中概述的开发模式下,您可以做的是包括一个useRef变量。
请记住,这段代码在生产环境中可能无法完美执行,因为useEffect只运行一次,而上面的代码需要运行两次才能在检索API调用之前将firstRender的状态更改为true。这只是为了帮助您降低开发成本。