【发布时间】:2019-12-05 03:27:47
【问题描述】:
我正在编写一个从 xml 文件中获取数据的简单应用程序。 fetchData 函数没问题,并返回一个我存储在我的状态中的数组。
但是当我尝试映射这个数组时,它返回一个空数组。所以我可以记录我的数据,但即使我尝试获取长度属性,它也会返回 0...
你可以在这里看到我的代码:
import React, { Component } from 'react';
import { parseString } from 'xml2js';
import data from './data';
class App extends Component {
state = {
parks: []
};
componentWillMount() {
let { parks } = this.state;
for (let key of data) {
this.fetchData(parks, key.name, key.url);
}
this.setState({ parks });
}
fetchData = (parks, name, url) => {
let free = '';
let park = {};
fetch(url)
.then(response => response.text())
.then(xml => {
parseString(xml, function(err, result) {
if (result) {
free = result.park.Free[0];
while (free[0] === '0') {
free = free.slice(1);
}
} else {
free = 'no info avaible';
}
});
park = {
name: name,
free: free
};
parks.push(park);
});
};
render() {
const { parks } = this.state;
console.log(parks);
const parkList = parks.map(({ name, free }) => <div>{name}</div>);
console.log(parkList);
return <div>{parkList}</div>;
}
}
export default App;
console.log(parks) 返回如下数组:
[
{
"name": "Antigone",
"free": "245"
},
{
"name": "Arc de Triomphe",
"free": "91"
}
]
console.log(parkList) 返回一个空数组
【问题讨论】:
-
这是因为您的 fetchData 是一个异步函数。可能重复stackoverflow.com/questions/57209251/…
标签: reactjs