私はカルーセルを建設しようとしているReactプロジェクトを持っています。私はスライドを個別に選択するために、カルーセルの下にボタンを左右に、いくつかの円を持っています。timeout()の前にsetTimeout()関数が呼び出されましたか?
changeImageTimer(index = 0) {
end = new Date().getMilliseconds();
console.info(end - start);
setTimeout(()=> {
this.addAnimation();
}, this.props.timeToChangeImage - this.props.timeOfTransitionAnimation);
animationTimeout = setTimeout(() => {
if (this.state.index >= this.props.data.length - 1) {
index = 0;
} else {
index = this.state.index + 1;
}
this.setState({index: index});
this.removeAnimation();
}, this.props.timeToChangeImage);
animationInterval = setInterval(() => {
setTimeout(()=> {
this.addAnimation();
}, this.props.timeToChangeImage - this.props.timeOfTransitionAnimation);
animationTimeout = setTimeout(() => {
if (this.state.index >= this.props.data.length - 1) {
index = 0;
} else {
index = this.state.index + 1;
}
this.setState({index: index});
this.removeAnimation();
}, this.props.timeToChangeImage);
}, this.props.timeToChangeImage);
}
:私はスライドアニメーションを再生するだけでなく、ユーザーが何をクリックしていない場合、それはループ内で実行されることを確認する間隔とタイムアウトの組み合わせを使用していカルーセルでスライドを変更するには
あなたが見ることができるように
clickSelector(index) {
this.clearIntervalsAndTimers();
this.setState({index: index});
start = new Date().getMilliseconds();
timeout = setTimeout(this.changeImageTimer(index), this.props.timeToHoldPictureAfterClick);
}
が、私はスライドが滞在し、その後いくつかの時間後にスライドの自動反復を再起動します:個々のスライドを選択する
ボタンが付属この機能を持っています。
しかし、 'changeImageTimer'コードは 'clickSelector'関数の直後に実行され、設定されたタイムアウト遅延後には実行されません。
この現象はなぜ発生しますか?
「ご覧いただけるように」 - あなたのコードは非常に理解しにくいです。 'this.props'オブジェクトを表示します。 'setTimeout'関数中の' this'は非常に誤解を招く可能性があります。 –