これは私の以前の質問のフォローアップですが、その中にマップがあれば、Reactのrender()メソッドの中でどのように関数を呼び出しますか?Reactのrender()関数のmap()関数内で関数を呼び出す
例(このコードはReact.Component
を拡張するクラスの内部にある):どんなに私は、私はいつも「this.getItemInfo()は関数ではありません」になってしまうしようとするもの
getItemInfo(item){
return `${item.Something} ${item.SomethingElse}`
}
render() {
return (
<div className="someDiv">
{
collection.map(function (item) {
return <div> {item.Name} {this.getItemInfo(item)} </div>
})
}
</div>
);
}
。
私は私のmap()
関数の内部this
にconsole.log
を行なったし、それはInfactはWindowオブジェクトに参照のうえましたが、私はそれを変更する方法を見つけるように見えることはできません。
疲れ:
- は
this
を渡す機能getItemInfo(){..} - として
getItemInfo
を規定の反応成分コンストラクタ - 呼び出しで
this.getItemInfo = this.getItemInfo.bind(this)
を呼び出す - マイマップ関数の2番目のパラメータとして
.bind(this)
以降
getItemInfo(item)
その他いくつかのこと....
なし。私はJavaScriptのthis
のリファレンスをかなり新しくしており、わかりません。
私はここでこれを使用することに関連していくつかの答えを読んでいますrender()
しかし、どれも私のために働いていないようです。
ええと、これはまだthis.getItemInfo()は関数ではないと言います。 私は機能宣言に特別なことを行わなければならないのですか? – Kobek
ねえ、私は 'this.getItemInfo.call(this、item)'で答えを更新しました。 render()の中でthis.func()を使用する場合、それをバインドする必要があります。 –
ちょうどそれを試してみました。私は今、未定義のプロパティを読み取ることができません:( – Kobek