Я пытаюсь установить состояние внутри then()
Обещания, но значение состояния не сохраняется и недоступно за пределами then ().
Ниже ОБНОВЛЕНО код:
handleSelect = location => {
this.setState({ location });
geocodeByAddress(
location
)
.then(results => getLatLng(results[0]))
.then(latLng => {
this.setState({
location_latitude: latLng.lat,
location_longitude: latLng.lng,
})
console.log(this.state.location_latitude); // returns the correct value
})
console.log(this.state.location_latitude); // returns null (the originally declared value)
}
Если я console.log(this.state.location_latitude)
, я получаю значение null
.Но если я консоль.log внутри блока then (), я получаю правильное значение.Как мне установить состояние в этом случае?
ОБНОВЛЕНО объяснение:
Чтобы дать лучший контекст всей логике здесь: я использую автозаполнение Google Адресовкомпонент, который позволяет пользователю выбрать местоположение из выпадающего списка.Вышеуказанный метод handleSelect
вызывается, когда пользователь выбирает местоположение из раскрывающегося списка.Затем я извлекаю широту и долготу места, выбранного пользователем, используя метод geocodeByAddress
, который является обещанием.Затем мне нужно получить широту и долготу и соответственно установить состояние, которое позже используется для отправки в базу данных.Я пока не могу отправить значение в базу данных, потому что есть другие входные данные формы, которые пользователь должен заполнить (которые также хранятся в состоянии), и как только он нажмет кнопку «Отправить», я отправлю все элементы состояния водиночный звонок на сервер.Итак, я ничего не хочу обновлять с помощью componentDidMount()
или пока не обновляется, чтобы использовать componentDidUpdate()
.В любом случае, я могу сохранить только значение состояния внутри тогда geocodeByAddress
(пожалуйста, исправьте меня, если я здесь не прав).Итак, я ДОЛЖЕН иметь возможность изменять значение состояния внутри блока then
.