本文基于React Native 0.52

Demo上传到Git了,有需要可以看看,写了新内容会上传的。Git地址 https://github.com/gingerJY/React-Native-Demo

一、总览

  这个效果也是APP里很常见的,之前把这个想的太复杂了,后来才知道原来用FlatList就可以轻松实现,效果图如下(专题精选):

二、代码实现

  1、加几条数据

topic: [{title: '岁末清扫有它们,体验大不同',describe: '更轻松、更美好的大扫除攻略',price: '9.9元起',},{title: '新年一点红,幸运一整年',describe: '那些让你“红”运当头的好物',price: '9.9元起',},
]

  2、写列表的一个item

renderTopicItem = ({ item }) => {return (<TouchableOpacity style={styles.topicItem}><Image source={require('../../img/topic.jpg')} style={styles.topicImg} /><View style={styles.topicContainer}><View style={styles.topicText}><Text style={styles.topicTitle}>{item.title}</Text><Text style={styles.topicDesc}>{item.describe}</Text></View><Text style={styles.topicPrice}>{item.price}</Text></View></TouchableOpacity>)}

  3、用FlatList渲染出列表

renderTopic() {return (<View style={styles.topic}><Text style={styles.topicHead}>专题精选</Text><FlatListdata={this.state.topic}keyExtractor={(item, index) => index}renderItem={this.renderTopicItem}horizontal={true}showsHorizontalScrollIndicator={false}/></View>)
}

  • data —— 数据(目前只支持普通数组)
  • renderItem —— 根据行数据data渲染每一行的组件
  • keyExtractor —— 用于为给定的item生成一个不重复的key(Key的作用是使React能够区分同类元素的不同个体,以便在刷新时能够确定其变化的位置,减少重新渲染的开销)
  • horizontal —— 设为true时是水平布局
  • showsHorizontalScrollIndicator —— 设为false,则不显示水平滚动条

4、样式

    topic: {width: width,alignItems:'center',backgroundColor: '#fff',paddingBottom:10,marginBottom:10,},topicHead:{fontSize:16,color:'#666',padding:15,},topicItem: {width: width*0.7,marginLeft:15,},topicImg: {width: width*0.7,height: width*0.4,borderWidth:0.5,borderColor:'#cdcdcd',borderRadius:2,},topicContainer:{flexDirection: 'row',justifyContent:'space-between',marginTop:10,},topicTitle:{fontSize:16,color:'#666',},topicDesc:{fontSize:13,color:'#999',marginTop:3,},topicPrice:{fontSize:14,color:'#b4282d',},

  recommend.js完整代码 https://github.com/gingerJY/example/blob/master/RN_flatList/recommend.js

三、其他

    

  这种也是用 FlatList 做的,写法都差不多,具体看https://github.com/gingerJY/React-Native-Demo

END-----------------------------------------------------------------

转载于:https://www.cnblogs.com/MaiJiangDou/p/8351288.html

React Native学习(七)—— FlatList实现横向滑动列表效果相关推荐

  1. 实现移动端touch事件的横向滑动列表效果

    要实现手机端横向滑动效果并不难,了解实现的原理及业务逻辑就很容易实现.原理:touchstart(手指按下瞬间获取相对于页面的位置)-->touchmove(手指移动多少,元素相应移动多少). ...

  2. React Native学习五- FlatList

    高性能的简单列表组件,支持下面这些常用的功能: 完全跨平台. 支持水平布局模式. 行组件显示或隐藏时可配置回调事件. 支持单独的头部组件. 支持单独的尾部组件. 支持自定义行间分隔线. 支持下拉刷新. ...

  3. React Native 学习资源精选仓库

    <React Native Awesome>这里fork过来的,汇集了各类react-native学习资料.工具.组件.开源App.资源下载.以及相关新闻等,只求精不求全.因后面无法 Pu ...

  4. React Native 学习资源精选仓库(汇聚知识,分享精华)

    React Native 学习资源精选仓库(汇聚知识,分享精华) <React Native Awesome>这里fork过来的,汇集了各类react-native学习资料.工具.组件.开 ...

  5. React Native学习提纲

    React Native学习提纲 当前版本最后修订日期: 2015年10月21日 一. React.js入门基础 1.基础HTML/CSS与基础开发工具使用 - html基础 doctype.常用标签 ...

  6. Android横向滚动卡片,Android实现横向滑动卡片效果

    Android实现横向滑动卡片效果 发布时间:2020-09-04 22:51:17 来源:脚本之家 阅读:255 作者:itbobby 最近项目上需要实现这样效果的一个页面,本来想找个现成的两下搞定 ...

  7. react native学习笔记13——FlatList上拉加载

    我们可以利用官方组件RefreshControl实现下拉刷新功能,但React Native官方没有提供相应的上拉加载的组件,因此在RN中实现上拉加载比下拉刷新要复杂一点. 虽然没有直接提供上拉加载的 ...

  8. React Native学习速记

    学习路线建议:ES5/6 -> React -> React Native  -> Redux + React-Navigation等 ES5 :https://wangdoc.co ...

  9. react native学习笔记29——动画篇 Animated高级动画

    1.前言 上一节我们学习了全局的布局动画api--LayoutAnimation,体验到其流畅柔和的动画效果,但有时我们需要实现一些更精细化的动画,或者完成一些组合动画,这时我们可以使用React N ...

最新文章

  1. 神经网络通用近似定理
  2. 我的Chrome常用快捷键
  3. 【机器学习PAI实践二】人口普查统计
  4. linux iconv
  5. JS特效——鼠标跟随特效——动态背景线条跟随鼠标移动
  6. c语言在一个文件后面添加数据类型,c语言简单入门之简单运行和数据类型
  7. windows下buildbot 的搭建及config文件讲解
  8. 北京联合大学计算机学院在哪个校区,北京联合大学各校区联系地址大全
  9. 云开发听说过没? Compilr 屌爆的在线开发工具 -_-#
  10. Namebase 给 GitHub 开发者白送钱,是拉新还是投资骗局?
  11. 计算机硬件调查PPT,调查报告 ppt
  12. 【CITE】C#默认以管理员身份运行程序实现代码
  13. 传智播客 C/C++学习笔记 函数调用 模型
  14. VS2003驱动开发环境配置
  15. iOS7以上: 实现如“日历”的 NavigationBar
  16. Java面向对象编程 实验报告
  17. Via板载声卡底噪严重、播放卡顿及耳机与扬声器音源切换问题【解决方法】
  18. 计算机考试科目一模拟试题,学车科目一模拟考试,最全答题知识点,送给准备考驾照的你...
  19. 解读《道德经》nbsp;五十六章nbsp;知者不言…
  20. layUI自定义列表每页条数

热门文章

  1. memcache windows64 位安装
  2. 黄聪:如何使用CodeSmith批量生成代码(转:http://www.cnblogs.com/huangcong/archive/2010/06/14/1758201.html)...
  3. Ftp上传类(FtpClient)
  4. mysql userstat_mysql 中记录用户登录错误日志方法小结
  5. listview 打开文件 c#_.NET CORE(C#) WPF简单菜单MVVM绑定
  6. java循环使用范围_Java循环流程控制语句
  7. 单调谐回路谐振放大器等效电路分析_谐振回路的工作原理
  8. mysql行转列和列转行_mysql 行转列和列转行实例详解
  9. VS中stack around the variable ‘****‘ was corrupted堆栈被破坏
  10. 矩阵相乘原理与C实现(实矩阵)