2017-11-02 1 views
0

私は私のrender()にこのような新しい価値の状態を設定してみてください。プロパティを読み取ることができません 'SETSTATE')

 this.state.contributionsList.map(function(item, i) { 
 
      this.setState({ 
 
       listUsers: item.login 
 
      }) 
 
     });

はまた、このようにしました:

let usersByRepo = this.state.contributionsList.map(function(item, i) { 
 
    this.setState({ 
 
     listUsers: item.login 
 
    }) 
 
});

私がconsole.log(item)を走らせると、私が必要とする全てのitensがあります。しかし私がこの情報を私の州に加えると、私はTypeError: Cannot read property 'setState' of undefinedというフィードバックを得る。どうして?

この結果を私のコンポーネントにpropとして送信しますので、私はそれを行うつもりです。しかし、私はまだこの問題を抱えています。

  • 1)これはなぜ発生するのですか?
  • 2)これを解決する最良の方法は何ですか?
+0

*「私はこの結果を自分のコンポーネントの支柱として送信するからです」*どの結果ですか? 'this.setState'は何も返しません。 –

答えて

2

あなたは、レンダリング関数内決してコールsetState、それが原因と無限ループになるはずです。あなたのロジックを再考し、そのコードをどこかに置くと動作します。

0

新規function()redefines what this isです。あなたはES6脂肪矢印の機能を使用できる場合は、これを実行します。そうでない場合

this.state.contributionsList.map((item, i) => { 
    this.setState({ 
     listUsers: item.login 
    }) 
}); 

を、この:

(レンダリング状態を設定する、と述べた
var that = this; 
this.state.contributionsList.map((item, i) => { 
    that.setState({ 
     listUsers: item.login 
    }) 
}); 

は)間違いなくあなたがやりたいものではありません。 setState()はrender()を呼び出すため、無限ループになります。私はあなたが何をしようとしているのかは分かりませんが、それを行うには別の方法が必要です。

関連する問題