Я очень новичок, чтобы реагировать, и мне нужно преобразовать широту в долготу, которую широта и долгота получают из базы огня. Так что проблема в том, что я могу консольный лог-адрес. Тем не менее, я не могу отобразить
Это мой строитель
this.getAddressFromLatLong = this.getAddressFromLatLong.bind(this)
Это функция, которую я написал для конвертации
getAddressFromLatLong(lat, long)
{ Geocode.fromLatLng(lat, long).then(
response => {
const address = response.results[0].formatted_address;
console.log(address);
return address;
},
error => { console.error(error); }
)}
Здесь я отображаю адрес
return (
<tr key={atData.uid}>
<td>{atData.uid}</td>
<td>{atData.user}</td>
<td><TimeStamp time={atData.dateTime} format='full' /></td>
<td>{this.getAddressFromLatLong(atData.latitude, atData.longtitude)}</td>
</tr>
)
Пожалуйста, сообщите>. <</p>
Edit:
Я понял, что размещенного мною кода недостаточно, поэтому вот больше информации о моих проблемах и конечном продукте, который я хотел
Итак, у меня есть эта страница, которая отображает все адреса и пользователей, когда пользователь выбирает блокировку из выпадающего списка, получаемого из базы данных
Так я и сделал свой выпадающий список
componentWillMount() {
const lockSelected = this.state.selectedLock
console.log(lockSelected)
// Calling the Lock List
axios
.get(process.env.REACT_APP_FIREBASE_DATABASE + '/' + doGetLocklist() + '.json?auth=' + process.env.REACT_APP_FIREBASE_DATABASE_SECRET)
.then((response) => {
// console.log("=== componentDidMount: axios - Lock List ===")
this.setState({ locklistArray: response.data, loading: false })
})
.catch((err) => { })
}
renderDropdown() {
return _.map(this.state.locklistArray, lockData => {
return (
<option value={lockData.uid}>{lockData.lockName}</option>
)
})
}
Вот так я выводю выпадающий список
<FormControl componentClass="select" placeholder="select" onChange={this.detectOnChangeEvent}>
<option value="">- Please Select a lock -</option>
{this.renderDropdown()}
</FormControl>
После этого, когда пользователь выберет блокировку, он запустит эту функцию deteOnChange, чтобы он заново отобразил таблицу с данными блокировки
detectOnChangeEvent(event) {
this.setState({
selectedLock: event.target.value,
})
this.fetchSelectedATData(event.target.value)
this.forceUpdateHandler()
}
forceUpdateHandler() {
this.forceUpdate();
};
fetchSelectedATData(atlist) {
var lockSelected = atlist
axios
.get(process.env.REACT_APP_FIREBASE_DATABASE + '/' + doGetAuditTrailList() + '/' + lockSelected + '.json?auth=' + process.env.REACT_APP_FIREBASE_DATABASE_SECRET)
.then((response) => {
// console.log("=== componentDidMount: axios - User List ===")
console.log(response.data)
this.setState({ atArray: response.data, loading: false })
})
.catch((err) => { })
this.renderATlistArray()
}
renderATlistArray() {
if (this.state.loading) {
return (<Loading />)
} else {
return _.map(this.state.atArray, atData => {
return (
<tr key={atData.uid}>
<td>{atData.uid}</td>
<td>{atData.user}</td>
<td><TimeStamp time={atData.dateTime} format='full' /></td>
<td>{this.getAddressFromLatLong(atData.latitude, atData.longtitude)}</td>
</tr>
)
})
}
}
Так что теперь все работает нормально. Я знаю, что это не правильный способ делать вещи тоже. Только то, что я не могу отобразить на своей таблице, когда я могу консольный журнал, и он возвращает правильный адрес.
Вот скриншот ответа
Надеюсь, со всей этой добавленной информацией вам, ребята, будет лучше понять код!