我在componentDidMount中获取用户的位置,并且效果很好。但是,在那之后,我正在尝试更改状态,并且它不会注册更改。这是我的构造函数:
constructor(props){
super(props);
this.locationRetrieved = this.locationRetrieved.bind(this);
this.state = {
latitude: 30,
longitude: 30
}
}
和我的locationRetreived函数(现在硬编码):
locationRetrieved() {
this.setState({
latitude: 78,
longitude: 89
});
}
和我的componentDidMount:
componentDidMount() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(success) {
this.locationRetrieved();
},
function(failure) {
alert(failure);
if(failure.message.indexOf("Only secure origins are allowed") == 0) {
// Secure Origin issue.
}
});
}
else{
alert("gelocation is not supported here");
}
}
我也试过直接设置状态而不是调用函数,比如:
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(success) {
this.setState({
latitude: 45,
longitude: 45
})
},
但这也不起作用。我知道检索到一个位置,因为当我发出警报(success.coords.latitude)时,会显示当前纬度的警报。
错误控制台说:
Uncaught TypeError: Cannot read property 'locationRetrieved' of undefined
at eval (eval at ./app/containers/CheckIn/index.js
一旦检索到纬度/经度,我怎样才能设置状态?
由于