Краткий ответ - состояние не обновляется с помощью ответа на запрос выборки.
Состояние должно быть обновлено после завершения api-запроса, то есть внутри одного из обратных вызовов then..
Как и в приведенном выше исходном коде, setState вызывается вне обещания (в методе componentDidMount), так как обещание, являющееся асинхронным по своей природе, не завершится, как только вы сделаете вызов и затем запустите обещание,Интерпретатор продолжит вызывать setState с geodata={}
.
. Надеюсь, теперь вы поняли утилиту .then(()=>{})
.Они гарантируют выполнение определенного кода после успешного выполнения Обещания.
Еще один указатель, когда вы хотите получить доступ к состоянию, используйте this.state
, так как это свойство экземпляра, а this
используется для доступа к этим свойствам.внутри класса.
Итак, правильный вызов setState с обратным вызовом должен выглядеть следующим образом - this.setState({geolocation: geodata}, ()=>{console.log(this.state)})
.
Надеюсь, это поможет.