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 相关文章推荐
Bootstrap实现水平排列的表单
Jul 04 Javascript
JS实现简单的tab切换选项卡效果
Sep 21 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
Nov 02 Javascript
详解Angular2响应式表单
Jun 14 Javascript
使用原生js+canvas实现模拟心电图的实例
Sep 20 Javascript
JS设计模式之访问者模式定义与用法分析
Feb 05 Javascript
使用webpack-dev-server处理跨域请求的方法
Apr 18 Javascript
Vue.js 时间转换代码及时间戳转时间字符串
Oct 16 Javascript
node.js实现为PDF添加水印的示例代码
Dec 05 Javascript
JavaScript算法学习之冒泡排序和选择排序
Nov 02 Javascript
浅谈vue权限管理实现及流程
Apr 23 Javascript
jQuery实现鼠标滑动切换图片
May 27 jQuery
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
php文件上传后端处理小技巧
2016/05/22 PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
2017/03/08 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
Laravel框架源码解析之反射的使用详解
2020/05/14 PHP
Javascript学习笔记6 prototype的提出
2010/01/11 Javascript
Jquery Select操作方法集合脚本之家特别版
2010/05/17 Javascript
jQuery右键菜单contextMenu使用实例
2011/09/28 Javascript
jQuery Html控件基本操作(日常收集整理)
2016/03/11 Javascript
Javascript的表单与验证-非空验证
2016/03/18 Javascript
JS实现可编辑的后台管理菜单功能【附demo源码下载】
2016/09/13 Javascript
KnockoutJS 3.X API 第四章之数据控制流with绑定
2016/10/10 Javascript
servlet+jquery实现文件上传进度条示例代码
2017/01/25 Javascript
JS判断非空至少输入两个字符的简单实现方法
2017/06/23 Javascript
jQuery选择器之属性过滤选择器详解
2017/09/28 jQuery
Vue中的无限加载vue-infinite-loading的方法
2018/04/08 Javascript
JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析
2018/07/26 Javascript
[52:14]VG vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python实现监控某个服务 服务崩溃即发送邮件报告
2018/06/21 Python
python使用多进程的实例详解
2018/09/19 Python
python-django中的APPEND_SLASH实现方法
2019/06/21 Python
Python英文文章词频统计(14份剑桥真题词频统计)
2019/10/13 Python
Python pip安装模块提示错误解决方案
2020/05/22 Python
python 解决pycharm运行py文件只有unittest选项的问题
2020/09/01 Python
如何用python开发Zeroc Ice应用
2021/01/29 Python
python gui开发——制作抖音无水印视频下载工具(附源码)
2021/02/07 Python
飞利浦法国官网:Philips法国
2019/07/10 全球购物
Chain Reaction Cycles俄罗斯:世界上最大的在线自行车商店
2019/08/27 全球购物
C语言面试题
2013/05/19 面试题
回门宴父母答谢词
2014/01/26 职场文书
孝敬父母的演讲稿
2014/05/14 职场文书
民间借贷协议书范本
2014/10/01 职场文书
法务专员岗位职责
2015/02/14 职场文书
闪闪的红星观后感
2015/06/08 职场文书
简短清晨问候语
2015/11/10 职场文书
CSS 实现Chrome标签栏的技巧
2021/08/04 HTML / CSS
根德5570型九灯四波段立体声收音机是电子管收音机的楷模 ? 再论5570
2022/04/05 无线电