ReactNative新手学习之路06滚动更新ListView数据的小示例
本节带领大家学习使用ListView 做一个常用的滚动更新数据示例:
知识点:
- initialListSize={200} 第一次加载多少数据行
- onEndReached={this.onEndReached} listview不能有flexDirection: 'row',
onEndReachedThreshold像素时候执行该方法 定义方法必须onEndReached:function(){} 其他都会造成异常加载 - pageSize={200}每次循环加载数据条数
- onEndReachedThreshold={500} 配合onEndReached 到达底部多少像素开始加载
- removeClippedSubviews={false} //安卓下开启有bug
- scrollRenderAheadDistance={500} //滚动底部多少像素开始加载数据
- dataCache 存储数据实现保存历史数据
- dataCache=dataCache.concat(dataBlob); concat() 方法用于连接两个或多个数组
代码如下:'use strict';/*下拉更新ListView数据的小示例 知识点 * initialListSize={200} 第一次加载数据行 onEndReached={this.onEndReached} onEndReachedThreshold像素时候执行该方法 pageSize={200}每次循环加载数据条数 onEndReachedThreshold={500} 配合onEndReached 到达底部多少像素开始加载 removeClippedSubviews={false} //安卓下开启有bug scrollRenderAheadDistance={500} //滚动底部多少像素开始加载数据 dataCache 存储数据实现保存历史数据 dataCache=dataCache.concat(dataBlob); concat() 方法用于连接两个或多个数组 */ var React = require('react-native'); var { AppRegistry, StyleSheet, Text, View, Image, ListView,} = React; //缓存数据 var dataCache = { dataCache: '', };var MListView = React.createClass({_renderRow:function(rowData: string, sectionID: number, rowID: number) { return ( <View style={{flex:1, margin:5}}> <Text> {rowData} </Text> </View> ); }, _genRows: function(){ var dataBlob = []; for (var ii = 0; ii < 1000; ii++) { dataBlob.push('Row ' + ii ); } return dataBlob; }, getInitialState: function() { dataCache=this._genRows({});//缓存数据 var ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}); return { dataSource: ds.cloneWithRows(dataCache), }; }, onEndReached:function(){ console.log('endreached'); var dataBlob = []; for (var ii = 2000; ii < 3000; ii++) { dataBlob.push('Row ' + ii ); } dataCache=dataCache.concat(dataBlob); this.setState({ dataSource:this.state.dataSource.cloneWithRows(dataCache), }); }, render: function() { return ( <View style={styles.flex}> <ListView dataSource={this.state.dataSource} renderRow={this._renderRow} initialListSize={200} onEndReached={this.onEndReached} pageSize={200} onEndReachedThreshold={500} removeClippedSubviews={false} scrollRenderAheadDistance={500} /> </View> ); } }) const styles = StyleSheet.create({ flex:{ flex:1, }, }); module.exports = MListView;希望能帮你解决问题。
React Native 技术交流群127482131,欢迎大家一起来学习RN。转载请保留文章链接 http://www.reactnative.pw/
每天进步一点点
ReactNative新手学习之路06滚动更新ListView数据的小示例的更多相关文章
- ReactNative新手学习之路07ListView_ renderHeader使用StaticContainer
react native新手学习之路07ListView_ renderHeader使用StaticContainer 1.某些特殊场景需要用ScrollView滚动和ListView配合但是不幸运的 ...
- ReactNative新手学习之路01-创建项目开始
新手学习之路01-创建项目开始 小菜鸟准备学习RN开发,决定写下自己的学习历程,方便其他也想要学习RN的人,后期会持续更新写下自己所有学习经历,一步步从菜鸟成长成业内高手.开发环境准备,本文默认环境已 ...
- ReactNative新手学习之路04 组件化开发轮播图swiper支持安卓和IOS
react native 新手之路04 组件化开发轮播图swiper支持安卓和IOS npm install react-native-carousel --save git 地址Properties ...
- ReactNative新手学习之路03真机调试
React Native新手入门03真机调试(iOS) 从设备访问开发服务器 在启用开发服务器的情况下,你可以快速的迭代修改应用,然后在设备上查看结果.这样做的前提是你的电脑和设备必须在同一个wifi ...
- ReactNative新手学习之路02第一个RN项目
开始第一个RN项目(iOS版)我的电影列表0.1版,后面做列表版 打开上一节项目 index.ios.js,android打开index.android.js.我这里使用的是Atom编辑器,你也可以使 ...
- ReactNative新手学习之路05 使用夜神模拟器调试ReactNative
1.首先确保adb环境添加到path环境 2.安装好夜神模拟器 3.运行模拟器 4.adb connect 127.0.0.1:62001 5.摇一摇设置IP和端口 如127.168. ...
- android ListView中含有按钮事件实时更新ListView数据案例
1.布局文件Listview <?xml version="1.0" encoding="utf-8"?> <android.support. ...
- linux运维、架构之路-K8s滚动更新及回滚
一.滚动更新 应用程序一次只更新一小部分副本,更新成功后,再更新更多的副本,最终完成所有副本的更新. 滚动更新的优点:零停机,整个更新过程始终有副本在运行,从而保证了业务的连续性. 1. ...
- Go语言学习之路(持续更新中)
菜鸟 Go语言教程 教程(RUNOOB.COM):http://www.runoob.com/go/go-tutorial.html Go全球官网:https://golang.org/ (2018- ...
随机推荐
- JAVA中常说的三大框架指:SSH
即:spring.Struts.hibernate Spring:功能强大的组件粘合济,能够将你的所有的Java功能模块用配置文件的方式组合起来(还让你感觉不到spring的存在)成为一个完成的应用 ...
- CSS属性简写
盒模型简写: 如果top.right.bottom.left的值相同,如下面代码:margin:10px 10px 10px 10px; 缩写为:margin:10px; 如果top和bottom值相 ...
- HTML5标签
可以进行省略的标签 不允许写结束标记的标签:area(定义图像映射中的区域).base(为页面上的所有链接规定默认地址或默认目标).br.col(为表格中一个或多个列定义属性值).embed(定义嵌入 ...
- 自定义UITableView各种函数
转自:http://blog.sina.com.cn/s/blog_7e3132ca0100wyls.html 在XCode对应头文件中修改该类所继承的父类: 在对应的.m文件中添加如下代码: 这样就 ...
- Android Fragment使用(四) Toolbar使用及Fragment中的Toolbar处理
Toolbar作为ActionBar使用介绍 本文介绍了在Android中将Toolbar作为ActionBar使用的方法. 并且介绍了在Fragment和嵌套Fragment中使用Toolbar作为 ...
- Android 更新UI的几种方式
1.Activity的 runOnUiThread textView = (TextView) findViewById( R.id.tv ); new Thread(new Runnable() { ...
- CSS3-02 样式 1
概述 上一篇博客中,概述了如何在 HTML 文档中使用 CSS,以及如何选择 HTML 元素,并且在文档的最后以表格的形式给出了 CSS 中所有的属性.在接下来的这篇博客中,将阐述主要 HTML 元素 ...
- java HelloWorld 提示“错误: 找不到或无法加载主类 HelloWorld“解决方案
在检查环境变量等前提工作准确无误后,注意要配好CLASSPATH,仍然报“错误: 找不到或无法加载主类 HelloWorld“. 本人工程目录:mygs-maven/src/main/java/hel ...
- sublime text2 bracketHighLighter 配置
一.BracketHighlighter能为ST提供括号,引号这类高亮功能,但安装此插件后,默认没有高亮,只有下划线表示,不是很醒目,需要如下配置1. 在ST中用package control安装Br ...
- TNS-12541: TNS:no listener TNS-12560 TNS-00511: No listener
为了测试需要,系统管理员帮忙将一台ORACLE数据库服务器克隆到虚拟机上,我上去删除了root.oracle.tomcat账号下的crontab定时作业,然后启动了ORACLE数据库实例,删除 ...