【发布时间】:2021-09-30 12:16:17
【问题描述】:
嗨,我正在尝试通过将所有数据输入到数组变量中来显示来自 ReactJS 中的 json url 的数据,但我不能在 JSX 部分中使用该数组,因为在渲染时该数组尚未填充我尝试' d 很多事情,但我总是陷入一个承诺循环,我需要一个承诺来从另一个人那里获取数据。 代码:
let arry = [];
let ar = [];
async function getdriver() {
const response = await fetch("https://ergast.com/api/f1/current/drivers.json");
ar = await response.json();
ar.MRData.DriverTable.Drivers.forEach((element) => {
arry.push(element);
});
return arry;
}
getdriver();
console.log(arry);// the array is populated but i think it waits for it before showing
console.log(arry.lenght); //lenght is 0
JSX:
return (
<div>
<Menu />
<div style={{ textAlign: "left" }}>
<h4>ff</h4>
<Button >change</Button>
<br></br>
<i>{arry[0].code}</i>// error ' Cannot read property 'code' of undefined ' so arry is empty?
</div>
</div>
);
【问题讨论】:
-
不返回数组,而是将数据保存在组件的状态和JSX内部,对保存在状态的数组使用
map()方法。见:Using the State Hook -
那里发生了一些“特殊”的事情:)。你需要
awaitgetdriver()方法。
标签: javascript reactjs promise jsx fetch-api