私は以下の配列マップメソッドを使用して画像URLの配列を反復処理し、img srcでJSXを返します。反応onClick JSX関数から返された
理想的には、各画像にクリックしてバインドしたいので、この(クリックした)img srcを後で還元することができます。
以下、私にエラーを与える:「未定義のプロパティを読み取ることができません 『changeImg』」
<div className="gallery-thumbs">
{ galleryImages.map(function(img, index){
return <img
key={ img }
className="thumb-product-img" src={ img }
onClick={ this.changeImg.bind(this) } />;
}) }
</div>
しかし、私はそれは私にエラーを与えないレベルをonClickのを上に移動...唯一の問題は、この文脈が失われることです。
<div className="gallery-thumbs" onClick={ this.changeImg.bind(this) }>
{ galleryImages.map(function(img, index){
return <img
key={ img }
className="thumb-product-img" src={ img } />;
}) }
</div>
tl:dr;私のレンダリングメソッドの外で返されたJSXへのクリックをバインドする方法はありますか?
ありがとうございます - これで解決しました。矢印機能を使うことを忘れないでください! – Myles
@Myles 'this.changeImg.bind(this)'から、私はそれらの関数をあなたのコンポーネントにバインドしていないと仮定します:あなたのコンポーネントで関数を定義するときはいつでも、それらを以下のように定義することができます: 'myFunction =()=> {this.changeImg = changeImg.bind(this); 'あなたは' this.changeImg = changeImg.bind(this); 'を呼び出すことができます。毎回それを束縛する。あなたが私に尋ねると、 'arrow'関数はよりスムーズになります:) – Nocebo