我想通过在反应中使用Geolocation API
来获取位置信息。
我做了一个button
来获取此代码中的位置信息。
import React, { Component } from 'react'
class App extends Component {
constructor(props) {
super(props)
this.state = {
latitude: null,
longitude: null,
}
}
position = async () => {
await navigator.geolocation.getCurrentPosition(
position => this.setState({
latitude: position.coords.latitude,
longitude: position.coords.longitude
}),
err => console.log(err)
);
console.log(this.state.latitude)
}
render() {
return (
<div>
<button onClick={this.position} className='Filter'>Filter</button>
</div>
);
}
}
export default App;
一旦我按下button
,控制台将显示null
。
但是,当我再次按下button
时,控制台将显示位置信息。
您知道为什么我第一次无法获得位置信息吗?
答案 0 :(得分:7)
setState
是一个异步函数。
第一次调用position
时,状态最终会更新。它已经第二次出现了,这就是为什么它被记录了。
您可以将日志记录移至setState
的第二个参数,这是一个回调。
this.setState({
latitude: position.coords.latitude,
longitude: position.coords.longitude
}, newState => console.log(newState))