2016-11-14 43 views
2

我需要一些在我的反应应用程序中使用Axios的助手。我将它与地理位置结合使用以获取用户位置,并将其用于与Axios的api通话。Axios获取反应

我的代码是:

componentDidMount() { 
if (navigator.geolocation){ 

    function success(position) { 
    var latitude = position.coords.latitude; 
    var longitude = position.coords.longitude; 
    var th = this; 
    this.serverRequest = 
     axios.get(`https://api.darksky.net/forecast/APIKEY/`+latitude+`,`+longitude+`?units=auto`) 
     .then(result => { 
      th.setState({ 
      daily: result.data.daily.data, 
      loading: false, 
      error: null 
      }); 
     }) 
     .catch(err => { 
     // Something went wrong. Save the error in state and re-render. 
     this.setState({ 
      loading: false, 
      error: err 
     }); 
     }); 
    }; 
    function error() { 
    console.log('geolocation error') 
    }; 
    navigator.geolocation.getCurrentPosition(success, error); 
} 
} 

但我最终的误差Uncaught TypeError: Cannot set property 'serverRequest' of undefined

回答

7

success被称为回调,其this值不会是正确的 - 你的情况是undefined。您可以通过在您的回拨功能上使用bind来解决此问题:

navigator.geolocation.getCurrentPosition(success.bind(this), error); 
+1

您已经度过了我的一天。谢谢! – frisk0