2017-08-02 13 views
1

私はリアクションブートストラップとカルーセルを使用しています。選択からカルーセル項目とオープンモーダルを選択したいが、私は最初Carousel.Itemコンポーネントをラップし、モーダルを追加し、包まれたインスタンスにハンドラをクリックする任意の助けカルーセル - 選択からカルーセルアイテムとオープンモーダルを選択する方法

+0

シェアの詳細情報、コードスニペットを、次のように私は私のCarouselコンポーネントでこれを使用することになり、 '反応-modal'パッケージは、モーダルのための使用を作るための良いコンポーネントです。 –

+0

const MyCarousel2 =({items})=>

{items && items.map((item, i) => {item.title} )}
; – Vin

+0

ここに私のカルーセルがカルーセルをクリックしたいアイテムのリストを表示しています。選択されたアイテムのプロパティを取得し、プロパティをバイパスするモーダルを開いてください。 – Vin

答えて

0

を行うことができない、多分次

class Item extends Component { 
    constructor() { 
     super(); 

     this.state = { 
      show: false 
     }; 
    } 

    render() { 
     const { caption, title, src, alt, className, modal } = this.props; 

     return (
      <Carousel.Item> 
       <img 
        className={className} 
        src={src} 
        alt={alt} 
        onClick={e => this.setState({ show: true })} 
       /> 
       <Carousel.Caption> 
        <h1> 
         {title} 
        </h1> 
        <p> 
         {caption} 
        </p> 
       </Carousel.Caption> 

       {/* --> modal instance <-- */} 
       <Modal 
        show={this.state.show} 
        onHide={() => this.setState({ show: false })} 
       > 
        <Modal.Header closeButton> 
         <Modal.Title id="contained-modal-title"> 
          {modal.title} 
         </Modal.Title> 
        </Modal.Header> 
        <Modal.Body> 
         {modal.content} 
        </Modal.Body> 
        <Modal.Footer> 
         <Button onClick={() => this.setState({ show: false })}> 
          Close 
         </Button> 
        </Modal.Footer> 
       </Modal> 
       {/* --> end modal instance <-- */} 
      </Carousel.Item> 
     ); 
    } 
} 
のようなもの次

など

class MyCarousel extends Component { 
    constructor() { 
     super(); 

     this.state = { 
      items: [ 
       { 
        caption: "blah 1", 
        title: "blah 1", 
        src: "/path/to/image", 
        alt: "blah 1" 
       }, 
       { 
        caption: "blah 2", 
        title: "blah 2", 
        src: "/path/to/another/image", 
        alt: "blah 2" 
       } 
      ] 
     }; 

     this.renderItems = this.renderItems.bind(this); 
    } 

    renderItems() { 
     const { items } = this.state; 

     items.map(item => { 
      const modal = { 
       title: item.title, 
       content: item.caption 
      }; 

      return <Item key={item.title} {...item} modal={modal} />; 
     }); 
    } 

    render() { 
     return (
      <Carousel> 
       {this.renderItems()} 
      </Carousel> 
     ); 
    } 
} 
+0

ありがとう!私は試してみます – Vin

+0

これをうまくやってみましたか? –

+0

はい。私は自分のコードを変更して、現在は期待どおりに動作しています。助けてくれてありがとう – Vin

関連する問題