【发布时间】:2021-11-14 16:51:47
【问题描述】:
我的问题:我的状态有时会显示,如果我刷新浏览器,更新代码我收到以下错误 TypeError: Cannot read properties of undefined (reading 'country') 我不确定为什么会发生这种行为。在一种情况下它会显示,而另一种情况下它不会。任何解释和解决方案将不胜感激。
我的响应返回 200 状态代码,并且我 console.log 中的所有适当数据都是合法的,所以我很困惑为什么会出现这个问题。
App.js
import api from './api/fetchCovidData'
import { useState, useEffect } from 'react'
const App = () => {
const [covid, setCovidData] = useState({})
useEffect(() => {
const fetchCovidData = async () => {
try{
const response = await api.get('/cases?country=France');
console.log(response.data)
setCovidData(response.data);
} catch (err) {
if (err.response){
// Not in the 200 response range
console.log(err.response.data);
console.log(err.response.status);
console.log(err.response.headers);
} else {
console.log(`Error: ${err.message}`);
}
}
}
fetchCovidData();
}, []);
return (
<div>
<h1>{covid.All.country}</h1>
<h1>{covid.All.population}</h1>
</div>
);
}
export default App;
fetchCovidData.js
import axios from "axios";
export default axios.create({
baseURL: 'https://covid-api.mmediagroup.fr/v1'
});
示例响应
{
"All": {
"confirmed": 2604595,
"recovered": 195365,
"deaths": 62548,
"country": "France",
"population": 64979548,
"sq_km_area": 551500,
"life_expectancy": "78.8",
"elevation_in_meters": 375,
"continent": "Europe",
"abbreviation": "FR",
"location": "Western Europe",
"iso": 250,
"capital_city": "Paris",
"lat": "46.2276",
"long": "2.2137",
"updated": "2020/12/26 12:21:56+00"
}
}
【问题讨论】:
标签: javascript reactjs json axios