2017-08-02 77 views
1

我正在使用反應式自舉並使用旋轉木馬。要從選項選擇旋轉木馬項目和開放的模式,但未能如願任何幫助旋轉木馬 - 我如何選擇旋轉木馬項目並從選擇中打開模式

+0

分享更多的信息,代碼片段等。'反應,modal'包是一個很好的組件來使用的情態動詞使用。 –

+0

const MyCarousel2 =({items})=>

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

+0

在這裏,我的旋轉木馬顯示的項目列表,我想點擊旋轉木馬選擇項目屬性,並打開模式繞過屬性 – Vin

回答

0

我首先包裹Carousel.Item成分,並添加一個模式,然後單擊處理到包裝實例,類似也許下面

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> 
     ); 
    } 
} 

接下來,我會在我的Carousel組件,如下

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