本文基于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>
<FlatList
data={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-----------------------------------------------------------------

React Native学习(七)—— FlatList实现横向滑动列表效果的更多相关文章

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

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

  2. react native 左边固定,右边横向滑动左右自适应高度

    要实现的效果 https://zuobaiquan.github.io/blogImg/201903/01.gif

  3. React Native 学习笔记--进阶(二)--动画

    React Native 进阶(二)–动画 动画 流畅.有意义的动画对于移动应用用户体验来说是非常必要的.我们可以联合使用两个互补的系统:用于全局的布局动画LayoutAnimation,和用于创建更 ...

  4. React Native 学习-01

    React Native 学习 (学习版本 0.39) 一.环境配置 二.IDE选择 webstorm 1.webstorm配置 ①.首先是可以选择使用汉化包汉化.eu68 ②.安装插件和外部库. 由 ...

  5. react native 学习一(环境搭配和常见错误的解决)

    react native 学习一(环境搭配) 首页,按照http://reactnative.cn/docs/0.30/getting-started.html#content上的介绍,下载安装pyt ...

  6. React Native 学习资料

    React Native 学习资料 学习资料 网址 React Native中文网 https://reactnative.cn/

  7. React Native 学习(三)之 FlexBox 布局

    React Native 学习(三)之 FlexBox 布局

  8. React Native学习(八)—— 对接七鱼客服

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

  9. iOS、swift、React Native学习常用的社区、论坛

    <!----iOS> <!----Swift>*IOS开发常用社区:http://code4app.com/ *IOS开发常用社区:http://www.cocoachina. ...

随机推荐

  1. grep 与 find 简单命令

    在使用linux的时候,经常会用到查找文件或者查找文本,下面介绍两个命令. grep 使用方法: // 在当前目录下递归查找class字符串 grep "string" -r . ...

  2. 02.将SDK获取到的ECS主机信息入库

    1.通过调用阿里SDK,将获取到的ECS信息存入数据库,如果不知道SDK怎么使用,查看:01.阿里云SDK调用,获取ESC主机详细信息 2.import aliSDK应用的是01.阿里云SDK调用,获 ...

  3. template package (godoc 翻译)

    template 包 概述(Overview) template 包实现了数据驱动模板用于生成文本输出. 要生成HTML输出,请参阅html/template包,它具有与此包相同的接口,但会自动保护H ...

  4. 冒烟测试与BVT测试

    冒烟测试,它和回归测试的性质一样--只是一个测试活动,并不是一个测试阶段.冒烟测试贯穿于测试的任何一个阶段,单元测试.集成测试.系统测试里都有冒烟测试. 冒烟测试和其他所有的测试活动的目的不一样,它不 ...

  5. (转) Linux中profile、bashrc、bash_profile之间的区别和联系

    原文地址:http://blog.csdn.net/chenchong08/article/details/7833242 /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登 ...

  6. getComputedStyle与currentStyle获取样式(style/class)

    今天看jQuery源码CSS部分,里面用到了currentStyle和getComputedStyle来获取外部样式. 因为elem.style.width只能获取elem的style属性里的样式,无 ...

  7. python中使用递归实现反转链表

    反转链表一般有两种实现方式,一种是循环,另外一种是递归,前几天做了一个作业,用到这东西了. 这里就做个记录,方便以后温习. 递归的方法: class Node: def __init__(self,i ...

  8. Java实现矩阵计算器【代码】

    其实这个程序最开始是大二下学期Java的一次平时作业,当时只要求产生几个随机矩阵并对这些矩阵进行计算. 所以当时没去实现现在这么丰富而且实用的功能.不过当时倒是挺想去做的,无奈有些不知道怎么去实现. ...

  9. 适合在Markdown里面使用的emoji

    因为Markdown里面加颜色需要写html style, 所以对于一些标题, 还是用一下emoji吧: RED APPLE (

  10. Java学习笔记8(面向对象一:概念、private)

    面向过程的思想:遇到问题,想,我该怎么解决这个问题?然后一步一步解决 面向对象的思想:遇到一件事的时候,思考,我该让谁来做,至于他怎样去做,不是我需要考虑的事情,只要最后做好就行 实际举例:我们要组装 ...