setState在componentDidMount

时间:2017-04-28 12:17:53

标签: javascript reactjs

我在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 

一旦检索到纬度/经度,我怎样才能设置状态?

由于

0 个答案:

没有答案