【发布时间】:2021-12-14 20:42:27
【问题描述】:
我正在使用 RapidAPI Api 在我的项目中加载加密货币数据。数据正在我的 React 组件中加载甚至呈现,但是一旦我刷新,我必须从头开始加载数据以获取特定的硬币数据。重新加载时,我得到 TypeError: Cannot read properties of undefined (reading 'name')
这是我的代码:
import React, { useState, useEffect } from "react";
import "./Homepage.css";
import CryptoCard from "../Card/Card";
import axios from "axios";
const Homepage = () => {
const [coinData, setCoinData] = useState([]);
useEffect(() => {
const i = 5;
const options = {
method: "GET",
url: "https://coinranking1.p.rapidapi.com/exchanges",
headers: {
"x-rapidapi-host": "coinranking1.p.rapidapi.com",
"x-rapidapi-key": "REDACTED",
},
};
axios
.request(options)
.then((response) => {
setCoinData(response.data.data.exchanges);
// console.log(coinData);
// console.log("Working!!");
})
.catch((error) => {
console.error(error);
});
}, []);
return (
<div className="homepage">
<div className="heading">
<h1>Discover {coinData[0].name}</h1>
<hr className="line" />
</div>
<div className="cards-container">
<CryptoCard />
</div>
</div>
);
};
export default Homepage;
我为什么会得到
【问题讨论】:
-
是的,上下文数据不会在页面加载之间持续存在。为什么会这样?
-
检查
coinData数组应该可以解决这个问题:<h1>Discover {coinData[0]?.name}</h1> -
顺便说一句,你的标题是错误的,你不使用 useContext,只是 useState ;-)
-
哦,我是想写useEffect!我的错!
标签: reactjs api react-hooks