2017-01-18 5 views
0

Ich versuche die FourSquare API zu verwenden, um Standortinformationen in meiner React App zurückzugeben. Um dies zu tun, verwende ich dieses nützliche Paket: https://www.npmjs.com/package/foursquarevenuesWie lege ich den richtigen Lexical Scope fest, wenn ich Promises in ES6 verwende/React

Dieses Paket verwendet Versprechungen, um den API-Aufruf zu machen. Mein Code ruft das Paket wie folgt auf. Der API-Aufruf funktioniert gut und ich kann die Antwort protokollieren - aber wenn ich versuche, den Status zu setzen, gibt dies this.setState ist keine Funktion. Ich bin sehr neu zu ES6 Arrow-Funktionen, aber ich habe versucht, den Versprechen Aufruf um die neue Syntax zu schreiben - wie ich dachte, dass die Verwendung von Arrow-Funktionen bindet automatisch den Kontext von diesem mit dem übergeordneten Bereich. Dies hat das Problem jedoch nicht gelöst. Was mache ich falsch? Jede Hilfe wird geschätzt!

foursquare.venues.getVenues(params) 
      .then(function(venues) { 
      const venueList = venues.response.venues 
       console.log(venueList); 
      this.setState({ 
       venues: venueList // this returns this.setState is not a function 
      }) 
      }) 
      .catch(err => { 
      console.log(err); 
      }); 
+4

'.then (Veranstaltungsorte => {... this.setState() ...})'? –

+0

Danke - das habe ich irgendwie vermisst. Geschätzt – ElJefeJames

Antwort

0
(arg1, arg2, arg3) => { this.doSomething(); } 

Diese Notation eine Funktion, die von der übergeordneten this automatisch erben erstellen.

Die andere Möglichkeit besteht darin, dies in einer Konstante zu speichern, die vererbt wird.

const self = this; 
function exemple() { 
    self.doSomething(); 
} 
Verwandte Themen