我正在构建一个谷歌地图组件,我正在尝试将用户的lng和lat设置为状态。
position.coords.latitude
和position.coords.longitude
会记录正确的坐标,但当我尝试将它们设置为状态时,我会在标题中收到错误。
constructor(props) {
super(props);
this.state = {
userLatitude: 0,
userLongitude: 0
}
}
componentDidMount() {
navigator.geolocation.getCurrentPosition(function(position) {
console.log(position.coords.latitude + " " + position.coords.longitude);
this.setState({userLatitude: position.coords.latitude});
this.setState({userLongitude: position.coords.longitude});
});
}
答案 0 :(得分:0)
你需要bind
getCurrentPosition
因为它里面没有引用React组件的上下文,因此setState不可用
此外,您应该在一个语句中执行此操作,而不是使用两个setState
语句,否则您的组件将重新呈现两次
navigator.geolocation.getCurrentPosition((position) => {
console.log(position.coords.latitude + " " + position.coords.longitude);
this.setState({userLatitude: position.coords.latitude, userLongitude: position.coords.longitude});
});