不变违规:对象作为React子对象无效(找到:具有键{_40,_65,_55,_72}的对象)

时间:2020-05-29 08:04:37

标签: javascript react-native location expo

我有一个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}的对象)。如果要渲染子级集合,请改用数组。

1 个答案:

答案 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>
      );
    }
}