は、私は私のコンポーネントをレンダリングするときレンダリングコンポーネントのフィルタ機能でthis.stateを使用するにはどうすればいいですか?以下
somarray.user.filter(function(ele, index) {
if(this.state.showAllUser == false) {
return (index < 3)
}
else {
return true
}
})
、このフィルタ機能内部の「this.state.showAllUser」は定義されていません...私のコードです。
この問題を解決するにはどうすればよいですか?
を期待するいくつかの関連の質問があります:(1)このコードが現れるコンテキストは何ですか? (2)コンポーネントの状態はどのように設定されていますか? (3) 'this.state.showUser'は未定義ですか、' this.state'は未定義ですか? –
'this.state'は、Windowsオブジェクトで、getInitialState関数で設定したものではありません。 – Dreams
これは 'filter'に渡された関数に' this'のスコープをバインドする必要があることを意味します。 'somearray.user.filter'を呼び出すスコープ内のコンポーネントインスタンスを' this 'とすると、 'somearray.user.filter(function(e、i){...} bind(this)) '。 [Here](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this)は 'this'のいくつかのドキュメントで、[here](https://developer.mozilla .org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind)は 'Function.prototype.bind'のドキュメントです。 –