javascript - React 在选项中显示获取的数据
问题描述
我正在尝试使用 api 来获取我正在使用 fetch 的国家/地区列表,在获取列表后我需要在 UI 中将国家/地区列表显示为选项,目前我能够将其打印到控制台但在选项上它不是反映请检查我做错了什么以及如何解决,
const [contry, setcontry] = useState([])
useEffect(() => {
const urlp = "https://covid19.mathdro.id/api/countries";
fetch(urlp)
.then(response => {
if (response.status === 200) {
return response.json();
} else {
throw new Error('Something went wrong on api server!');
}
})
.then(data => {
// console.log(data.countries)
const lp = data.countries
// console.log(lp);
setcontry(lp)
}).catch(error => {
console.error(error);
});
}, [])
<div class="form-group">
<label for="sel1">Select list:</label>
<select class="form-control" id="sel1">
<option>Global</option>
<option>Global1</option>
{contry.map((x) => { console.log(x.name);
<option value={x.name}>{x.name}</option>
})}
解决方案
代码中的主要问题是您没有从contry.map
函数返回任何内容。
所以,通过改变你的代码
从
{contry.map((x) => { console.log(x.name);
<option value={x.name}>{x.name}</option>
})}
至
{contry.map((x) => {
console.log(x.name);
return <option key={x.name} value={x.name}>{x.name}</option>
})}
将工作。
const { useState, useEffect } = React;
const App = () => {
const [contry, setcontry] = useState([])
useEffect(() => {
const urlp = "https://covid19.mathdro.id/api/countries";
fetch(urlp)
.then(response => {
if (response.status === 200) {
return response.json();
} else {
throw new Error('Something went wrong on api server!');
}
})
.then(data => {
// console.log(data.countries)
const lp = data.countries
// console.log(lp);
setcontry(lp);
}).catch(error => {
console.error(error);
});
}, [])
return (
<div class="form-group">
<label for="sel1">Select list:</label>
<select class="form-control" id="sel1">
<option>Global</option>
<option>Global1</option>
{contry.map((x) => {
console.log(x.name);
return <option key={x.name} value={x.name}>{x.name}</option>
})}
</select>
</div>
)
}
ReactDOM.render(<App />, document.getElementById("react"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.0/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.0/umd/react-dom.production.min.js"></script>
<div id="react"></div>
推荐阅读
- django - Django Elastic Beanstalk 秘密变量
- java - 无法将模块添加到 jpackage 创建的应用程序
- python - 在 Python 中从范围的分类变量(例如 30-35 的平均值)中查找平均值
- python - 在 Tkinter 中创建一个新的框架按钮(没有 __innit__)
- elasticsearch - 在 IntelliJ IDEA 中构建和运行 Elasticsearch 源代码时出错
- batch-file - 用于减去变量的命令提示符脚本
- python - 在 endScreen 问题 Pygame 上保存 HighScore
- python - 匹配字符串和计数频率
- asp.net - LINQ“GroupBy”正在添加一个空对象
- swiftui - 在 swiftui 中缓慢左边缘滑动时,navigationBar 根显示导航栏目标