Асинхронные вызовы не могут быть возвращены и обработаны как часть вашего рендера.Вместо этого вам нужно выполнить асинхронную загрузку вне рендера, а затем установить полученные данные в состояние для рендеринга.
В вашем случае вам потребуется компонент с состоянием, который вы использовали для каждого элемента вваш FlatList
.Этот компонент будет обрабатывать загрузку и отображать результат после его загрузки.
Например:
class MapListItem extends React.Component {
state = {
address: '',
}
componentDidMount() {
const {
item,
} = this.props;
this.getAddress(item.latitude, item.longitude);
}
getAddress = (lat, lng) => {
Geocoder.geocodePosition({lat: lat, lng: lng}).then(res => {
this.setState({
address: res[0].formattedAddress,
});
});
}
render() {
return (
// All your map/details - the other parts of your current renderItem
...
<Text>{this.state.address}</Text>
...
)
}
}
И тогда ваш FlatList renderItem становится:
renderItem={({ item, index }) => (
<MapListItem item={item} index={index} />
)}