问题描述
我对React还是很陌生,我想要实现的是,当我单击按钮时,我的位置被检测到并更新了状态,我尝试这样做,但是由于某种原因,它没有更新我的位置州,我已经在互联网上搜索了所有内容,但找不到适合我业务的解决方案。非常感谢您的协助。
this.state = { coordinatesList: [123,456],[567,891] }
<button onClick={this.addCurrentLocation}></button>
addCurrentLocation() {
var coordinatesList = this.state.coordinatesList;
console.log("coordinatesList ",coordinatesList)
navigator.geolocation.getCurrentPosition((position) => {
coordinatesList.push([position.coords.latitude,position.coords.longitude]); ==> this doesn't work
})
// coordinatesList.push([123,456]); ===> this works
this.setState({
coordinatesList
})
}
解决方法
您的问题是getCurrentPosition
是异步的,因此您必须将setState
放在回调内,否则setState
在getCurrentPosition
结束之前会被调用。
addCurrentLocation() {
var coordinatesList = this.state.coordinatesList;
navigator.geolocation.getCurrentPosition((position) => {
coordinatesList.push([position.coords.latitude,position.coords.longitude]);
this.setState({
coordinatesList
})
})
}