2017-12-02 8 views
1

私はRamdaを使って反応するアプリケーションを構築しています。ラムダと反応してsetStateを構成する

{ 
    "datasets": [foo, bar] 
} 

だから私はこれを達成するためにcomponentDidMountメソッドを使用しました:ページのロードには、私はいくつかのデータをロードし、それは次のようになりますので、私の状態でそれを入れたいときに。

componentDidMount() { 
    fetch('/api/dataset/') 
     .then(res => res.json()) 
     .then(datasets => this.setState(R.assoc('datasets', datasets))) 
} 

これは動作しますが、その後、私はそれもスリッカーこれは動作しませんR.compose

componentDidMount() { 
    fetch('/api/dataset/') 
     .then(res => res.json()) 
     .then(R.compose(this.setState, R.assoc('datasets'))) 
} 

を使用して作ることができると思った、それは私にエラーを与える:

TypeError: Cannot read property 'enqueueSetState' of undefined 
    at r.setState (ReactBaseClasses.js:62) 
    at _pipe.js:3 
    at _arity.js:14 
    at <anonymous> 

なぜこれが起こるのですか?それは「これ」の拘束と関係がありますか?

+1

this.setState.bind(これは)でこれをか? –

+0

ありがとう、this.setState = this.setState.bind(this)をコンストラクタに追加すると、問題が解決しました –

+0

素敵!がんばろう –

答えて

2

あなたconstructor方法

constructor() { 
    super(); 
    this.setState.bind(this); 
} 
関連する問題