用Hooks实现的高性能React-Native Swiper组件

875 阅读3分钟

Github仓库: github.com/Voyzz/react…
NPM仓库: www.npmjs.com/package/rea…

Hello, folks!

🦄 This is a powerful Swiper hooks component for React Native

✨ 为React Native开发的Swiper Hooks组件

📚 Welcomes to provide your valuable comments or suggestions by 'Issues' or my contact information

✨ 欢迎通过”issues“或我的联系方式,为我提供宝贵意见

👨🏻‍💻 Powered by Voyz Shen
✨ Shanghai Jiao Tong University, Ctrip

Catalog


How to use

  • installation
npm i react-native-swiper-hooks --save
  • import
import Swiper from 'react-native-swiper-hooks'
  • Useage
...
const _renderList = ()=>{
  let listData = [
      {
        title:'1',
        bgColor:'#f00'
      },
      {
        title:'2',
        bgColor:'#0f0'
      },
      {
        title:'3',
        bgColor:'#00f'
      },
    ]
    return (
      listData.map((item,idx)=>{
        return (
          <View style={{width:WIDTH,height:300,backgroundColor:item.bgColor,justifyContent: 'center',alignItems: 'center'}} key={idx}>
              <Text>{item.title}</Text>
          </View>
        )
      })
    )
}

...

<Swiper height={300}
        autoplay={true}
        loop={true}
        showPagination={true}
        >
  {_renderList()}
</Swiper>

...
  • update
npm update react-native-swiper-hooks

Demo

autoplay ↓

autoplay

height={300}
paginationSelectedColor={'#CCFF66'}
autoplay={true}
loop={true}
showPagination={true}
direction={'row'}

non-autoplay ↓

non_autoplay.gif

height={300}
paginationSelectedColor={'#CCFF66'}
autoplay={false}
loop={true}
showPagination={true}
direction={'row'}

non-loop ↓

non_loop.gif

height={300}
paginationSelectedColor={'#CCFF66'}
autoplay={false}
loop={false}
showPagination={true}
direction={'row'}

vertical scrolling ↓

vertical_scrolling.gif

height={300}
paginationPosition={'left'}
paginationSelectedColor={'#CCFF66'}
autoplay={true}
loop={true}
showPagination={true}
direction={'column'}

diff Size ↓

swiper5.gif

height={300}
childWidth={WIDTH-100}
paginationSelectedColor={'#CCFF66'}
autoplay={true}
loop={true}
showPagination={true}
direction={'row'}

(child:{width=WIDTH-100})

init Index ↓

swipe6.gif


Properties

pagination-shower.jpg

- Basic -

PropDefaultOptionsTypeDescription
width[width of screen]/NumberWidth of the Swiper container
容器宽度
height[height of screen]/NumberHeight of the Swiper container
容器高度
childWidth//NumberWidth of the child component(when width of container and child component)
子元素宽度(当子元素宽度与容器宽度不同时传此参数)
childHeight//NumberWidth of the child component(when height of container and child component)
子元素高度(当子元素宽度与容器高度不同时传此参数)
boxBackgroundColor//ColorBackground color of the Swiper container
容器背景颜色
initIndex0/NumberIndex of the init child
初始页
direction'row''row' / 'column'StringDirection of the scrolling
滚动方向
minOffset10/NumberThreshold of scroll distance for page turning
翻页的滚动阈值
autoplaytruetrue / falseBooleanEnable autoplay
是否自动播放
looptruetrue / falseBooleanEnable loop mode
是否循环滚动
autoplayGapTime3/Numbersecond between autoplay transitions
自动播放时间间隔
autoplayDirectiontruetrue / falseBooleanEnable forward direction when autoplay
是否正向自动播放
scrollEnabledtruetrue / falseBooleanEnable hand-rolling
是否可以手动滚动
animatedtruetrue / falseBooleanEnable smooth scrolling animation
是否开启滚动动画
bouncestruetrue / falseBooleanEnable pull flexibly when you scroll to the head and tail
到达首尾时是否可以弹性拉动一截

- Pagination -

PropDefaultOptionsTypeDescription
showPaginationtruetrue / falseBooleanEnable pagination shower
是否显示页码器
paginationDirection'bottom''bottom' / 'top' / 'left' / 'right'StringPosition of the pagination
页码器位置
paginationOffset5/NumberDistance between pagination shower and side
页码器距边距离
paginationUnselectedSize6/NumberSize of the point (non-current)
提示点大小(非当前页)
paginationSelectedSize10/NumberSize of the point (current)
提示点大小(当前页)
paginationUnselectedColor'#FFFFFF'/ColorColor of the point (non-current)
提示点颜色(非当前页)
paginationSelectedSize'#000000'/ColorColor of the point (current)
提示点颜色(当前页)

Functions

- callback -

FuncParamsTypeDescription
onPaginationChangeindexNumberRetrun the index of current page when it changes
页码改变时返回当前页码索引
onScrollBeginDragnativeEventObjectCallback on scroll begin drag
开始拖动时的回调函数
onScrollEndDragnativeEventObjectCallback on scroll end drag
结束拖动时的回调函数

Versions

  • v1.2.0

[添加新功能] 允许swiper内子元素尺寸与容器尺寸不同

  • v1.1.3

[性能优化] 修复页码器更新延迟
[bug修复] 修复循环模式下翻页至页尾时的bug

  • v1.1.2

更新文档

  • v1.1.1

[bug修复] 修复安卓循环模式下翻页闪屏问题

  • v1.1.0

组件项目迁移