私は、谷の画像オブジェクトをループする画像ギャラリーを持ち、i
をonClick関数に渡したいと思います。これは私のイメージギャラリーコードです:ReactJS onClick関数でキーを渡す
<div className="gallery clearfix">
{ block.gallery.map((item, i) => (
i < 1 ?
<div className="gallery-image" key={i} onClick={this.toggle}>
<a href='' className="inner">
<img src={item.images.thumbnail_sm} alt={block.title} srcSet={`${item.images.thumbnail_md} 1x, ${item.images.thumbnail_lg} 2x`} className="img-fluid image"/>
</a>
</div>
: null
))}
<div className="gallery-thumbs">
<div className="row">
{ block.gallery.map((item, i) => (
i > 0 && i < (limit + 1) ?
<div className="gallery-item" key={i} onClick={this.toggle}>
<a href='' className="inner">
<img src={item.images.thumbnail_sm} alt={block.title} srcSet={`${item.images.thumbnail_md} 1x, ${item.images.thumbnail_lg} 2x`} className="img-fluid image" title="" />
{ block.gallery.length > (limit + 1) && i == limit ?
<div className="img-overlay">
<span className="img-indicator">{ block.gallery.length - (limit + 1) }+ <span className="hidden-xs">Foto's</span></span>
</div>
: null
}
</a>
</div>
: null
))}
</div>
</div>
</div>
そして、これは私がクリックされた画像を表示したい私のreactstrapモーダルです:
<Modal isOpen={this.state.modal} toggle={this.toggle} className={this.props.className}>
<ModalBody>
<img src={block.gallery[this.state.clickedImage].item.images.thumbnail_lg}/>
</ModalBody>
</Modal>
そして、ここでは、私が渡したいトグル機能でありますclickedImage番号:
toggle(id) {
this.setState({
clickedImage: id,
modal: !this.state.modal
});
}
どちら 'のonClick = {this.toggle.bind(本、I)}' 'またはストアする必要タグでdata-index = {i} '(' + event.target.dataset.index'で取得) – Matt
@Mattはあなたに私にexamplを与えることができますe? – Sreinieren
'onClick = {this.toggle}' - > 'onClick = {this.toggle.bind(this、i)}'を置き換えます。あなたの 'toggle'は最初のパラメータとして' id'を期待していますが、それはイベントハンドラなので、代わりに 'event'オブジェクトを最初のパラメータとして取得します。 'bind'はこれを変更するので、' toggle'は 'id、event'パラメータを受け取りますが、それはレンダリングごとのインデックスごとに新しい関数です。 – Matt