Javascript 在FlatList中获取Promise作为返回值

Javascript 在FlatList中获取Promise作为返回值,javascript,react-native,es6-promise,Javascript,React Native,Es6 Promise,使用react nativeFlatList显示值,如: <FlatList data={this.state.oldLocations} showsVerticalScrollIndicator={false} keyExtractor={item => item.id} renderItem={({item,index}) => <View key={index} sty

使用react native
FlatList
显示值,如:

<FlatList 
          data={this.state.oldLocations}
          showsVerticalScrollIndicator={false}
          keyExtractor={item => item.id}
          renderItem={({item,index}) =>
        <View key={index} style={styles.flatview}>
            <GoogleStaticMap
                latitude={item.latitude.toString()}
                longitude={item.longitude.toString()}
                zoom={13}
                size={{ width: 450 , height: 250 }}
                apiKey={'MY_API_KEY'}
            />

            <Text style={styles.name}>{item.id}</Text>
            <Text style={styles.email}>{item.latitude}</Text>
            <Text style={styles.email}>{item.longitude}</Text>
            {<Text style={styles.email}>{this.getAddress(item.latitude, item.longitude)})}</Text>}
          </View>

        }


        />

异步调用不能作为呈现的一部分返回和呈现。相反,您需要在渲染外部执行异步加载,然后将检索到的数据设置为渲染状态

在您的情况下,您需要为
平面列表中的每个项目使用一个有状态组件。此组件将处理加载并在加载后显示结果

e、 g:

类MapListItem扩展了React.Component{
状态={
地址:'',
}
componentDidMount(){
常数{
项目,,
}=这是道具;
this.getAddress(item.latitude、item.longitude);
}
getAddress=(纬度,液化天然气)=>{
Geocoder.geocodePosition({lat:lat,lng:lng})。然后(res=>{
这是我的国家({
地址:res[0]。格式化地址,
});
});
}
render(){
返回(
//所有地图/详细信息-当前渲染的其他部分
...
{this.state.address}
...
)
}
}
然后您的平面列表renderItem变为:

renderItem={({ item, index }) => (
   <MapListItem item={item} index={index} />
)}
renderItem={({item,index})=>(
)}

异步调用无法返回并作为呈现的一部分呈现。相反,您需要在渲染外部执行异步加载,然后将检索到的数据设置为渲染状态

在您的情况下,您需要为
平面列表中的每个项目使用一个有状态组件。此组件将处理加载并在加载后显示结果

e、 g:

类MapListItem扩展了React.Component{
状态={
地址:'',
}
componentDidMount(){
常数{
项目,,
}=这是道具;
this.getAddress(item.latitude、item.longitude);
}
getAddress=(纬度,液化天然气)=>{
Geocoder.geocodePosition({lat:lat,lng:lng})。然后(res=>{
这是我的国家({
地址:res[0]。格式化地址,
});
});
}
render(){
返回(
//所有地图/详细信息-当前渲染的其他部分
...
{this.state.address}
...
)
}
}
然后您的平面列表renderItem变为:

renderItem={({ item, index }) => (
   <MapListItem item={item} index={index} />
)}
renderItem={({item,index})=>(
)}

您想在哪里调用该函数?在
平面列表中
获取lat的地址,lng您得到的返回值是什么?当前显示的是什么?当用户按平面列表项之一时,是否要调用它?错误:
不变冲突:不变冲突:对象作为React子对象无效(找到:具有键{u 40,{u 65,{u 55,{u 72}的对象)。如果要呈现子对象集合,请改用数组。
否,我不希望在用户单击时调用它。您希望在何处调用该函数?在
平面列表中
要获取lat的地址,LNGW您得到的返回值是什么?当前显示的是什么?当用户按平面列表项之一时,是否要调用它?错误:
不变冲突:不变冲突:对象作为React子对象无效(找到:具有键{u 40,{u 65,{u 55,{u 72}的对象)。如果要呈现子对象集合,请改用数组。
no我不希望它在用户单击时调用。
renderItem={({ item, index }) => (
   <MapListItem item={item} index={index} />
)}