javascript - Invariant Violation:对象作为 React 子对象无效(发现:具有键 {_40、_65、_55、_72} 的对象)
问题描述
我有一个平面列表,在平面列表中,每个项目都有地理位置。
我{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>
);
}
}
我得到的错误:
Invariant Violation:对象作为 React 子对象无效(发现:具有键 {_40、_65、_55、_72} 的对象)。如果您打算渲染一组子项,请改用数组。
解决方案
你不能像那样返回异步函数。你可以像这样使用 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>
);
}
}
推荐阅读
- forms - ProcessCmdKey 不适用于双显示器
- python - 如何通过在python中添加同一列的2个不同行值的值来估算特定的行值
- python - 遍历两个列表,将一个列表与另一个列表进行比较并返回值
- xcode - iphone v14.4.2 和 xcode 12 的 Xcode 构建失败
- 2d - 如何在 2D 游戏中停止正在减速的物体?
- json - 将 Spring Data 与 PostgreSQL JsonB 类型属性一起使用
- typescript - 打字稿中的条件类型
- excel - 自更新计算字段
- html - 如何在 CSS 中的圆形图像上使用 box-shadow?
- javascript - Node.js - eventListener - 如何在触发事件时登录文件