in js/common/ViewPager.js [147:175]
handleHorizontalScroll(e: any) {
let selectedIndex = e.nativeEvent.position;
if (selectedIndex === undefined) {
selectedIndex = Math.round(
e.nativeEvent.contentOffset.x / this.state.width
);
}
if (selectedIndex < 0 || selectedIndex >= this.props.count) {
return;
}
if (
this.state.scrollingTo !== null &&
this.state.scrollingTo !== selectedIndex
) {
return;
}
if (
this.props.selectedIndex !== selectedIndex ||
this.state.scrollingTo !== null
) {
this.setState({ selectedIndex, scrollingTo: null }, () => {
// the onSelectedIndexChange handler can change props.selectedIndex, so we want
// to call it after the state has actually changed to avoid extra scrollTo call
// (see componentWillReceiveProps)
const { onSelectedIndexChange } = this.props;
onSelectedIndexChange && onSelectedIndexChange(selectedIndex);
});
}
}