2016-11-16 4 views
1

私は滑らかなカルーセルを使用しており、スライド数を取得しようとしています。私はReact.jsをES6で使用していますが、以下はカウントを返すために使用する関数ですが、私が理解していないのはconsole.log( "inside" + n)です。値を出力しますが、一方の外側はnullを出力します。何が間違っていますか?Slick Carousel Slide Count

countSlides() { 
    let n = 0; 
    $(this.innerSelector).on('init', (event, slick) => { 
     n = slick.slideCount; 
     console.log("inside" + n); 
    }); 

    console.log("outside" + n); 
    return n; 

    } 

さまざまな親コンポーネントでインスタンス化できるようにカルーセル用のクラスを作成しました。例えば、私が持っているこのいずれかのために:

class ImageCarousel extends React.Component { 
    constructor() { 
    super(); 
    this.carouselDidStart = false; 
    this.carouselControl = new CarouselControl({ 
     outerSelector: ".carousel-container", 
     innerSelector: ".extra-images-container", 
     infinite: false 
    }); 
    } 

そしてCarouselControlクラスで、私は)私はthis.carouselControl.countSlides(のようなスライドの数を見つけることができるように、このcountSlides機能を追加しようとしています。

答えて

0

$(this.innerSelector).onはイベントリスナーであるため、イベントが発生すると解凍され、非同期関数になります。あなたは、同じような操作を行うことができます:

オプション行に
constructor() { 
    this.slideCount = 0; 
} 

componentDidMount() { 
    $(this.innerSelector).on('init', (event, slick) => { 
    this.slideCount = slick.slideCount; 
    }); 
} 

countSlides() { 
    return this.slideCount; 
} 
+0

申し訳ありませんが、これはので、ここで、私のために働く私が作ったものではありませんでした滑らかなカルーセルのためのクラスと私はそれが必要なコンポーネントをインスタンス化している、私は上記の質問を更新します.. – sayayin

0

あなたは、スライドの数を取得することができます

$(this).slick("slickGetOption", "rows")