我只是在尝试实现一个简单的React项目,该项目从API检索数据并迭代数据以创建表行,我没有收到任何错误,但数据没有出现在表中。
import { useEffect, useState } from 'react';
import './App.css';
function Countries() {
const [data, setData] = useState([]);
useEffect(() => {
fetch('https://restcountries.com/v3.1/all?fields=name,continents,population,flag')
.then((resp) => resp.json())
.then((apiData) => {
setData(apiData);
});
});
return (
<div className="app-container">
<table>
<thead>
<tr>
<th>Name</th>
<th>Continent</th>
<th>Population</th>
<th>Flag</th>
</tr>
</thead>
<tbody>
{data.map((country) => {
<tr>
<td>{country.name}</td>
<td>{country.continents}</td>
<td>{country.population}</td>
<td>{country.flag}</td>
</tr>
})}
</tbody>
</table>
</div>
);
}
export default Countries;
正在提取数据:
仍然没有错误,所以我不确定为什么数据没有出现在表中。只是返回一个空白页。
任何帮助都将不胜感激。
2条答案
按热度按时间vatpfxk51#
在
tbody
标记中,您不会从map函数返回任何东西。您需要添加return
关键字或使用圆括号来 Package JSX。还要传递一个空数组作为第二个参数,以便只运行useEffect
一次。2q5ifsrm2#
您没有返回render
tr
元素,因为您将它们放在了大括号中,而不是圆括号中。另外,name
是一个对象,您应该使用country.name.common
,而country.continents
是一个数组,您应该将其连接到一个字符串,或者迭代这些项:另外,
useEffect
没有dependencies数组,这意味着它会在每次状态改变时运行(比如设置状态),这会导致另一个API调用,设置状态会导致无限循环,设置一个空数组[]
作为useEffect
的依赖项可以防止这种情况。示例:
x一个一个一个一个x一个一个二个x