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 深拷贝函数
Dec 04 Javascript
jquery dialog键盘事件代码
Aug 01 Javascript
javascript setAttribute, getAttribute 在不同浏览器上的不同表现
Aug 05 Javascript
cookie的复制与使用记住用户名实现代码
Nov 04 Javascript
jquery简单实现外部链接用新窗口打开的方法
May 30 Javascript
利用JS提交表单的几种方法和验证(必看篇)
Sep 17 Javascript
angularjs手动识别字符串中的换行符方法
Oct 02 Javascript
利用vue重构有赞商城的思路以及总结整理
Feb 21 Javascript
一文了解Vue中的nextTick
May 06 Javascript
mpvue小程序循环动画开启暂停的实现方法
May 15 Javascript
微信提示 在浏览器打开 效果实现过程解析
Sep 10 Javascript
vue 实现 rem 布局或vw 布局的方法
Nov 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
虫族 Zerg 魔法科技
2020/03/14 星际争霸
php tp验证表单与自动填充函数代码
2012/02/22 PHP
eclipse php wamp配置教程
2016/06/30 PHP
php + nginx项目中的权限详解
2017/05/23 PHP
PHP中数组转换为SimpleXML教程
2019/01/27 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
ExtJs 表单提交登陆实现代码
2010/08/19 Javascript
jQuery滚动加载图片效果的实现
2013/03/06 Javascript
js 操作select与option(示例讲解)
2013/12/20 Javascript
Extjs中RowExpander控件的默认展开问题示例探讨
2014/01/24 Javascript
两种方法基于jQuery实现IE浏览器兼容placeholder效果
2014/10/14 Javascript
jquery实现select选择框内容左右移动代码分享
2015/11/21 Javascript
简单谈谈javascript中this的隐式绑定
2016/02/22 Javascript
AngularJS基础 ng-list 指令详解及示例代码
2016/08/02 Javascript
基于Bootstrap和jQuery构建前端分页工具实例代码
2016/11/23 Javascript
概述jQuery中的ajax方法
2016/12/16 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
基于cookie实现zTree树刷新后展开状态不变
2017/02/28 Javascript
vue.js中过滤器的使用教程
2017/06/08 Javascript
浅谈Vue2.0父子组件间事件派发机制
2018/01/08 Javascript
webpack 模块热替换原理
2018/04/09 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】
2020/05/01 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
2020/07/26 Javascript
vue组件入门知识全梳理
2020/09/21 Javascript
vue中echarts的用法及与elementui-select的协同绑定操作
2020/11/17 Vue.js
[05:04]完美世界携手游戏风云打造 卡尔工作室地图界面篇
2013/04/23 DOTA
django 环境变量配置过程详解
2019/08/06 Python
python实现宿舍管理系统
2019/11/22 Python
pycharm 实现复制一行的快捷键
2021/01/15 Python
CSS3中的元素过渡属性transition示例详解
2016/11/30 HTML / CSS
美国最灵活的移动提供商:Tello
2017/07/18 全球购物
优秀共产党员演讲稿
2014/09/04 职场文书
中国文明网2015年“向国旗敬礼”活动网上签名寄语
2015/09/24 职场文书
2016婚礼主持词开场白
2015/11/24 职场文书
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
2021/05/27 Python