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