react-native 实现购物车滑动删除效果的示例代码


Posted in Javascript onJanuary 15, 2021

购物车的功能基本上电商项目都会有的,这是一篇关于react-native的,原生android的已经好久没写了。记得以前写原生购物车的时候,遇到过产品的灵魂质问,为啥iOS的滑动删除可以,android却那么难实现的。这个时候,我就打开微信说,android的微信版也是长按进行操作,iOS的是滑动操作的,两个平台自带的系统交互操作是不一样的。当然,最后还是默默的找各种三方库去进行滑动删除。

rn的项目也是找的网上的一个三方库进行列表滑动操作的,github地址react-native-swipe-list-view

最基本的使用方法和flatList差不多,data 属性数组数据源,renderItem 从data中挨个取出数据并渲染到列表中

<SwipeListView
  data={this.state.listViewData}
  renderItem={this.renderItem}
  keyExtractor={this.keyExtractor}
/>

这时候是不可以左右滑动的,就跟普通的flatList效果一样。加上renderHiddenItem属性,可以左右滑动。renderHiddenItem渲染的就是隐藏的内容,隐藏的内容位置是通过flex布局来控制,下面这个例子使用横向布局,通过space-between将内容控制在左右两边,形成了左右滑动时出现隐藏内容。

//这是左右都可以滑动的
renderHiddenItem = (data, rowMap) => {
  return <View style={{
    flex: 1,
    flexDirection: 'row',
    justifyContent: 'space-between'
  }}>
    <Text>Left</Text>
    <Text>Right</Text>
  </View>
}

我们这边只需要可以左滑,通过justifyContent: 'flex-end'属性将删除按钮内容置于最右边,同时设置SwipeListView的属性disableRightSwipe来禁止右滑操作。

renderHiddenItem = (data, rowMap) => {
  return <View style={{
    flex: 1,
    flexDirection: 'row',
    justifyContent: 'flex-end',
  }}>
    <TouchableOpacity style={{
      backgroundColor: '#FF496C',
      width: 80,
      justifyContent: 'center',
      alignItems: 'center'
    }}>
      <Text style={{color:'#fff'}}>删除</Text>
    </TouchableOpacity>
  </View>
}

这个时候向左滑,可以看到右边的删除按钮出来了,但是没有一直处于打开状态,还需要添加rightOpenValue={-80}属性,使其处于打开状态。

<SwipeListView
  disableRightSwipe
  data={this.state.listViewData}
  renderItem={this.renderItem}
  keyExtractor={this.keyExtractor}
  renderHiddenItem={this.renderHiddenItem}
  rightOpenValue={-80}
/>

另外有一个需要注意的是,renderItem进行列表渲染时,最外层的视图,官方推荐使用可点击响应触摸的,而不是<View/>,正常情况是,打开了一个视图,点其他视图,默认会关闭打开的那一项,如果最外层是<View/>则不会有这种效果。

//最外层是 TouchableHighlight
renderItem = ({item, index}, rowMap) => {
  return <TouchableHighlight
    onPress={() => {
    }}
    underlayColor={'#fff'}>
    ...
  </TouchableHighlight>
}

至此,滑动删除的效果已经基本满足了,后续就是业务逻辑,增删操作数据源刷新页面了。

react-native 实现购物车滑动删除效果的示例代码

到此这篇关于react-native 实现购物车滑动删除效果的示例代码的文章就介绍到这了,更多相关react-native 滑动删除内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
js加解密 脚本解密
Feb 22 Javascript
23个Javascript弹出窗口特效整理
Feb 25 Javascript
自己写的兼容ie和ff的在线文本编辑器类似ewebeditor
Dec 12 Javascript
Bootstrap Paginator分页插件与ajax相结合实现动态无刷新分页效果
May 27 Javascript
浅谈JS中json数据的处理
Jun 30 Javascript
jquery popupDialog 使用 加载jsp页面的方法
Oct 25 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
Jan 06 Javascript
vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航)
Apr 22 Javascript
基于jQuery Easyui实现登陆框界面
Jul 10 jQuery
微信小程序实现获取自己所处位置的经纬度坐标功能示例
Nov 30 Javascript
js中的 || 与 &amp;&amp; 运算符详解
May 24 Javascript
vue interceptor 使用教程实例详解
Sep 13 Javascript
vue element el-transfer增加拖拽功能
Jan 15 #Vue.js
关于uniApp editor微信滑动问题
Jan 15 #Javascript
关于javascript中的promise的用法和注意事项(推荐)
Jan 15 #Javascript
详解node.js创建一个web服务器(Server)的详细步骤
Jan 15 #Javascript
JavaScript中展开运算符及应用的实例代码
Jan 14 #Javascript
js中延迟加载和预加载的具体使用
Jan 14 #Javascript
JS中箭头函数与this的写法和理解
Jan 14 #Javascript
You might like
ftp类(example.php)
2006/10/09 PHP
ThinkPHP的Widget扩展实例
2014/06/19 PHP
PHP判断上传文件类型的解决办法
2015/10/20 PHP
PHP xpath()函数讲解
2019/02/11 PHP
jQuery 性能优化手册 推荐
2010/02/23 Javascript
javascript+canvas制作九宫格小程序
2014/12/28 Javascript
jquery 动态合并单元格的实现方法
2016/08/26 Javascript
jQuery中DOM节点删除之empty与remove
2017/01/20 Javascript
JavaScript判断变量名是否存在数组中的实例
2017/12/28 Javascript
AngularJS实时获取并显示密码的方法
2018/02/06 Javascript
如何从零开始利用js手写一个Promise库详解
2018/04/19 Javascript
angular2组件中定时刷新并清除定时器的实例讲解
2018/08/31 Javascript
vue1.0和vue2.0的watch监听事件写法详解
2018/09/11 Javascript
vue 循环加载数据并获取第一条记录的方法
2018/09/26 Javascript
手把手教你写一个微信小程序(推荐)
2018/10/17 Javascript
微信端调取相册和摄像头功能,实现图片上传,并上传到服务器
2019/05/16 Javascript
VSCode launch.json配置详细教程
2020/06/18 Javascript
vue 实现把路由单独分离出来
2020/08/13 Javascript
[03:39]2015国际邀请赛主赛事首日精彩回顾
2015/08/05 DOTA
[38:23]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第二场 11.01
2020/11/02 DOTA
讲解Python中的标识运算符
2015/05/14 Python
Python中的ctime()方法使用教程
2015/05/22 Python
对python3标准库httpclient的使用详解
2018/12/18 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
2019/03/05 Python
python二分法查找算法实现方法【递归与非递归】
2019/12/06 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
2020/02/04 Python
Django 解决开发自定义抛出异常的问题
2020/05/21 Python
基于Django集成CAS实现流程详解
2020/11/28 Python
python爬虫破解字体加密案例详解
2021/03/02 Python
css3实现多个元素依次显示效果
2017/12/12 HTML / CSS
中国宠物用品商城:E宠商城
2016/08/27 全球购物
Wiggle澳大利亚:自行车、跑步、游泳商店
2020/11/07 全球购物
数控专业自荐书范文
2014/03/16 职场文书
纪检干部现实表现材料
2014/08/21 职场文书
语文教师个人工作总结
2015/02/06 职场文书
谢师宴家长致辞
2015/07/27 职场文书