我有一个Flatlist,在flat list中,每个项目都有地理位置。
我正在从{this.getitemlocation(item.location)}
内部呼叫Flatlist
。这里的getitemlocation()
是函数,item.location
是经度和纬度。
我的getitemlocation()
:
async getitemlocation(item) {
let locationstring = item.split(",");
if(locationstring[0]!="None"&&locationstring[1]!="None"){
let location = {
latitude: Number(locationstring[0]),
longitude: Number(locationstring[1]),
};
itemloacation = await Location.reverseGeocodeAsync(location);
return (
<Text style={styles.itemLocation} key={item}>
{itemloacation.name} {"\u2022"} 2.3 km
</Text>
);
}
else{
return (
<Text style={styles.itemLocation}>
No Location
</Text>
);
}
}
我得到的错误:
不变违规:对象作为React子对象无效(找到:具有键{_40,_65,_55,_72}的对象)。如果要渲染子级集合,请改用数组。
答案 0 :(得分:0)
您无法返回类似的异步函数。您可以像这样使用Promise:
getitemlocation(item){
return new Promise(async (resolve) => {
let locationstring = item.split(",");
if(locationstring[0]!="None"&&locationstring[1]!="None"){
let location = {
latitude: Number(locationstring[0]),
longitude: Number(locationstring[1]),
};
itemloacation = await Location.reverseGeocodeAsync(location);
resolve(
<Text style={styles.itemLocation} key={item}>
{itemloacation.name} {"\u2022"} 2.3 km
</Text>
)
}else{
resolve (
<Text style={styles.itemLocation}>
No Location
</Text>
);
}
}