【发布时间】:2020-12-05 08:16:54
【问题描述】:
我正在尝试制作一个显示 Covid 19 号码的应用程序。我想在渲染组件时显示全局数字,所以我为此使用了 useEffect 钩子。当我尝试显示global.confirmed 时,它返回一个对象,但是当我尝试显示global.confirmed.value 时,我得到Cannot read property 'value' of undefined 错误。我该如何解决这个问题?
import React from "react";
import "./App.css";
import axios from "axios";
import { useState, useEffect } from "react";
import "./App.css";
const App = () => {
const [countries, SetCountries] = useState([]);
const [cases, SetCases] = useState([]);
const [global, SetGlobal] = useState({});
const urlGlobal = "https://covid19.mathdro.id/api/"
const urlCountries = "https://covid19.mathdro.id/api/countries/";
useEffect(() => {
axios.get(urlGlobal).then(res => SetGlobal(res.data))
axios.get(urlCountries).then((res) => SetCountries(res.data.countries));
}, []);
const showCases = (e) => {
const urlCases = `https://covid19.mathdro.id/api/countries/${e.target.value}`;
axios.get(urlCases).then((res) => SetCases(res.data));
};
return (
<div>
<div>
<p>Infected</p>
<p>{cases.confirmed.value}</p>
<p>{cases.lastUpdate}</p>
<p>Number of active cases of COVID-19</p>
</div>
<div>
<p>Recovered</p>
<p>{cases.recovered.value}</p>
<p>{cases.lastUpdate}</p>
<p>Number of recoveries from COVID-19</p>
</div>
<div>
<p>Deaths</p>
<p>{cases.deaths.value}</p>
<p>{cases.lastUpdate}</p>
<p>Number of deaths caused by COVID-19</p>
</div>
<select name="countries" onChange={(e) => showCases(e)}>
{countries.map((val, i) => (
<option key={i} value={val.name}>
{val.name}
</option>
))}
</select>
</div>
);
};
export default App;
【问题讨论】:
-
当你显示
cases.confirmed时发生了什么?你说你得到一个对象,但你能看看里面是否有任何字段吗? -
当你的组件第一次挂载时,数据还没有被获取。所以在第一次渲染时
cases是你传递给useState的空数组。 -
@Maxime 我添加了截图。
标签: reactjs axios react-hooks