UNPKG

react-native-swipe-left

Version:

a RN swipe-left component for listView.(左滑解决方案)

109 lines (92 loc) 3.88 kB
# react-native-swipe-left a RN swipe-left component for listView.(左滑解决方案) ### IOS && ANDROID IOS | Android -----|------- ![swipeleft ios preview](http://imgur.com/KswnF0X.gif) | ![swipeleft android preview](http://imgur.com/6FyHjft.gif) IOS | Android -----|------- ![swipeleft ios preview](http://imgur.com/e7FKKUs.gif) | ![swipeleft android preview](http://i.imgur.com/oXOMKME.gif) ### Features (特性) RESOLVE | 解决 ----------------- | ----- | ---------- the Opposite effect between two rows |(row之间的互斥收回) button configurable(one or more, text/image, bgcolor, width,callback etc)|左边按钮的可配置化(可配置多按钮,文字/图片,背景色,宽度,回调) pressable in single row |单个row内的按钮或链接可点击 optional animation type, timing/spring |可选择滚动动画类型,timing/spring ### Installation ``` npm install --save react-native-swipe-left ``` ### Usage example see the example/example.js for a more detailed example. ```javascript // 1, settings in your constructor constructor(props) { this._dataRow = {}; this.openRowId = ''; this.state = { scrollEnable: true, hasIdOpen: false }; } // 2, set scrollEnabled <ScrollView scrollEnabled={this.state.scrollEnable} {...props}/> // 3, set your button`s setting let rightBtn = [{ id: 1, text: 'button', width: 80, bgColor: 'red', underlayColor: '#ffffff', onPress: ()=>{alert('delete1!');}, }, { id: 2, image: 'your uri', width: 80, bgColor: null, onPress: ()=>{alert('delete2!')} }, { id: 3, text: 'button', width: 80, bgColor: 'yellow', onPress: ()=>{alert('delete3!');}, }] // 4, in your renderRow function(a is sectionId, b is rowId) let id = '' + a + b; <SwipeitemView root={this} ref={(row)=>this._dataRow[id] = row} id={id} data={data} rightBtn={rightBtn}> {children node} </SwipeitemView> ``` ### Props ##### component: Prop | Type | Optional | Default | Description --------------- | ------ | --------- | ---------- | ----------- root | current component | require | | current component ref | function | require | | it is row`s identity card id | string | require | | identity card rightBtn | array | require | | your buttons, one or more ##### row: Prop | Type | Optional | Default | Description --------------- | ------ | --------- | ---------- | ----------- boxbgColor | string | Yes | '#eeeeee' | when you swipe the row a lot ,you`ll see this color rowbgColor | string | Yes | '#ffffff' | row`s bgColor animationType | string | Yes | 'timing' | animation type duration | number | Yes | 150 | The animation process time ##### button: Prop | Type | Optional | Default | Description --------------- | ------ | --------- | ---------- | ----------- id | number | require | | deal with the 'key' problem text/image | string | Yes | | use text or a image width | number | Yes | | the width of button bgColor | string | Yes | | backgroundColor of button onPress | function| Yes | | the callback when you press a button underlayColor | string | Yes | | the underlayColor of TouchableHighlight ### Note: 从组件本身来讲,已经完成了ios/android端能够流畅左滑的工作([优化过程](https://github.com/yzsolo/yzsolo.github.io/issues/22 "优化过程")),但还可以继续优化体验,除了上面特性的可配置化,后期会增加更多灵活的配置,如:是否选择互斥,或是类似qq那样单次滑动只做一件事,滑出或滑进。