2016-11-14 2 views
2

Мне нужен помощник в использовании Axios в моем приложении для реагирования. Я использую его в сочетании с геолокацией, чтобы получить местоположение пользователя и использовать его в вызове api с помощью Axios.Axios fetch in react

Мой код:

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

Смежные вопросы