This swiper is modified based on leecade/react-native-swiper. Not the best Swiper component for React Native.
- Fixed some remained bugs.
- Both iOS and android use ScrollView.
- Removed some inessentials.
- Used typescript.
- Be Tested in one online project (lack of test...need more...)
- Dependencies Versions:
- react-native@^0.55.4
- react@^16.3.1
 
- Taro Components RN
- 京東拼購 iOS and android. The Swiper is locate in the index.
 
npm i @manjiz/react-native-swiper --saveimport React, { Component } from 'react'
import {
  View,
  Text
} from 'react-native'
import Swiper from '@manjiz/react-native-swiper'
class Example extends Component {
  onIndexChanged = (index: number) => {
  }
  onMomentumScrollEnd = (e, state) => {
  }
  render () {
    const slideStyle = { flex: 1, justifyContent: 'center', alignItems: 'center' }
    return (
      <Swiper
        autoplay={true}
        autoplayTimeout={6}
      >
        <View style={[slideStyle, { backgroundColor: 'red' }]}>
          <Text>Red</Text>
        </View>
        <View style={[slideStyle, { backgroundColor: 'green' }]}>
          <Text>Green</Text>
        </View>
        <View style={[slideStyle, { backgroundColor: 'blue' }]}>
          <Text>Blue</Text>
        </View>
      </Swiper>
    )
  }
}
export default Example| Prop | Type | Default | Description | 
|---|---|---|---|
| horizontal | boolean | true | If true, the scroll view's children are arranged horizontally in a row instead of vertically in a column | 
| loop | boolean | true | Set to false to disable continuous loop mode | 
| autoplay | boolean | false | Set to true enable auto play mode | 
| index | number | 0 | Index number of initial slide. And real index would be sync as it changed | 
| loadMinimal | boolean | false | Only load current index slide , loadMinimalSize slides before and after | 
| loadMinimalSize | number | 1 | see loadMinimal | 
| showsPagination | boolean | true | Set to false make pagination invisible. | 
| autoplayTimeout | number | 2.5 | Delay between auto play transitions (in second) | 
| autoplayDirection | boolean | true | Cycle direction control | 
| Prop | Type | Default | Description | 
|---|---|---|---|
| loadMinimalLoader | Element | Custom loader to display when slides aren't loaded | |
| dot | Element | <View ... /> | Allow custom the dot element | 
| activeDot | Element | <View ... /> | Allow custom the active-dot element | 
| renderPagination | (index: number, total: number, swiper: any) => JSX.Element | see source code | 
| Prop | Type | Default | Description | 
|---|---|---|---|
| width | number | - | If no specify default enable fullscreen mode by flex: 1 | 
| height | number | - | If no specify default fullscreen mode by flex: 1 | 
| dotColor | string | - | Allow custom the dot element | 
| activeDotColor | string | - | Allow custom the active-dot element | 
| containerStyle | ViewStyle | - | See default container style in source | 
| scrollViewStyle | ViewStyle | - | Style set to ScrollView | 
| style | ViewStyle | - | Style set to ScrollView contentContainerStyle | 
| paginationStyle | ViewStyle | - | pagination wrapper style | 
| dotStyle | ViewStyle | - | Allow custom the dot element | 
| activeDotStyle | ViewStyle | - | Allow custom the active-dot element | 
No need to change them.
| Prop | Type | Description | 
|---|---|---|
| onIndexChanged | index | Called with the new index when the user swiped | 
Supported ScrollResponder
| Prop | Type | Description | 
|---|---|---|
| onScrollBeginDrag | e / state / context | When animation begins after letting up | 
| onMomentumScrollEnd | e / state / context | Makes no sense why this occurs first during bounce | 
| onTouchStartCapture | e / state / context | Immediately after onMomentumScrollEnd | 
| onTouchStart | e / state / context | Same, but bubble phase | 
| onTouchEnd | e / state / context | You could hold the touch start for a long time | 
| onResponderRelease | e / state / context | You could hold the touch start for a long time | 
Note: each ScrollResponder be injected with two params: state and context, you can get state and context(ref to swiper's this) from params.
Scroll by relative index.
Parameters:
| Name | Type | default | Description | 
|---|---|---|---|
| index | number | undefined | offset index | 
| animated | bool | true | offset index | 
rsync -avr ~/react-native-swiper/dist ~/MyApp/node_modules/@manjiz/react-native-swiper