Skip to content

Commit bfe6eff

Browse files
committed
feat(component): add snapToNext() & snapToPrev()
1 parent 063f255 commit bfe6eff

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

index.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,10 @@ export default class Carousel extends Component {
315315
});
316316
}
317317

318+
get currentIndex () {
319+
return this.state.activeItem;
320+
}
321+
318322
startAutoplay (instantly = false) {
319323
const { autoplayInterval, autoplayDelay } = this.props;
320324

@@ -354,7 +358,26 @@ export default class Carousel extends Component {
354358
this.refs.scrollview.scrollTo({x: snapX, y: 0, animated});
355359
this.props.onSnapToItem && fireCallback && this.props.onSnapToItem(index, this.props.items[index]);
356360
}
361+
}
357362

363+
snapToNext (animated = true) {
364+
const itemsLength = this._positions.length;
365+
366+
let newIndex = this.currentIndex + 1;
367+
if (newIndex > itemsLength - 1) {
368+
newIndex = 0;
369+
}
370+
this.snapToItem(newIndex, animated);
371+
}
372+
373+
snapToPrev (animated = true) {
374+
const itemsLength = this._positions.length;
375+
376+
let newIndex = this.currentIndex - 1;
377+
if (newIndex < 0) {
378+
newIndex = itemsLength - 1;
379+
}
380+
this.snapToItem(newIndex, animated);
358381
}
359382

360383
render () {

0 commit comments

Comments
 (0)