违反常态:对象作为React子对象无效(发现:键为{_40,_65,_55,_72}的对象)

问题描述 投票:0回答:1

我有一个Flatlist,在flat list中,每个项目都有地理位置。

我正在从{this.getitemlocation(item.location)}内部呼叫Flatlistgetitemlocation()是功能,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}的对象)。如果要渲染子级集合,请改用数组。

javascript react-native location expo
1个回答
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>
      );
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.