2017-01-18 1 views
0

私はFourSquare APIを使ってReact App内の位置情報を返そうとしています。これを行うには、私はこの便利なパッケージを使用しています:https://www.npmjs.com/package/foursquarevenuesES6/Reactで約束を使用する際に、正しい「this」レキシカルスコープを設定するには

このパッケージはAPI呼び出しを約束しています。私のコードは、以下のようにパッケージを呼び出します。 API呼び出しがうまく動作し、応答を記録することができますが、状態を設定しようとするとthis.setStateが返されますが、関数ではありません。私はES6 Arrow関数の新機能ですが、Arrow関数を使用すると自動的にこれを親スコープにバインドすると考えていたので、新しい構文を使用するための約束を書き直そうとしました。しかし、これは問題を解決していません。私は間違って何をしていますか?どんな助けにも感謝!表記は自動的に親thisから継承する機能を作成することを

+4

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

+0

ありがとう - 私は何とかそれを逃した。感謝 – ElJefeJames

答えて

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

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); 
      }); 

もう1つの方法は、これを継承する定数に保存することです。

const self = this; 
function exemple() { 
    self.doSomething(); 
} 
関連する問題