2017-10-28 12 views
0

最近、ほとんどの機能を提供するためにjQueryプラグインを使用してサイトを構築した後、Reactに移動しました。画像スライダとライトボックスを作成するには、slick.jshalkaBox.jsまたはSimpleLightboxを組み合わせて使用​​しました(これはかなり簡単でした)。タッチ対応ライトボックス機能を[react-slick]に追加するにはどうすればよいですか?

Reactを使用しているので、私はreact-slickが偉大なスライダコンポーネントであることを発見しましたが、タッチ対応のライトボックス機能を追加するにはどうすればよいかわかりません。反応がよく反応するライトボックスのコンポーネントは反応が滑らかなものとペアになっていますか? react-slickのようなReactコンポーネントにhalkaBox.jsのようなJSプラグインを組み込む適切な方法はありますか?

ガイダンスをいただければ幸いです!

+0

クリック反応のデモページを確認して、指でスワイプすることができます。 「タッチ対応ライトボックス」の略語を教えてください。 – Vlad

+0

ええ、反応滑りスライダーはタッチ対応です。これはすばらしいです(クリック反応は何か...)。ライトボックスとは、画像をタップしてフルスクリーンの画像スライダを開くことを意味します。私が意味するものの例については、halkaBoxとSimpleLightboxのリンクを参照してください。 – ooloth

答えて

3

私は反応スリック+反応イメージライトボックスを使用することができますと思います。ローカル状態は、現在のイメージのパスを保存するのに適しています。

import Slider from 'react-slick'; 
import Lightbox from 'react-image-lightbox'; 

class Slider extends React.Component{ 
    constructor(props){ 
    super(props); 

    this.state = { 
     images: ['src/image1.png', 'src/image2.png', 'src/image3.png'], 
     current: '' 
    } 
    } 

    getSliderSettings(){ 
    return { 
     dots: true, 
     infinite: true, 
     speed: 500, 
     slidesToShow: 1, 
     slidesToScroll: 1 
    } 
    } 

    handleClickImage = (e, image) => { 
    e && e.preventDefault(); 

    this.setState({ 
    current: image 
    }) 
    } 

    handleCloseModal = (e) => { 
    e && e.preventDefault(); 

    this.setState({ 
    current: '' 
    }) 
    } 

    render(){ 
    const settings = this.getSliderSettings(); 
    const {images, current} = this.state; 

    return (
    <div> 
     <Slider {...settings}> 
     { images.map((image, index) => (
      <img src="image" onClick={ e => this.handleClickImage(e, image)} /> 

     ))} 
     </Slider> 

     {current && 
     <Lightbox 
      mainSrc={current} 
      onCloseRequest={this.handleCloseModal} 
      /> 
     } 
    </div> 
    ) 
    } 
} 
+0

これは賢いです!このソリューションにはありがとうございます。ほんの1つ:仕事をするには、と書き直す必要があります。 – ooloth

関連する問題