本节带领大家学习使用ListView 做一个常用的滚动更新数据示例:

知识点:

    1. initialListSize={200} 第一次加载多少数据行
    2. onEndReached={this.onEndReached} listview不能有flexDirection: 'row',
      onEndReachedThreshold像素时候执行该方法   定义方法必须onEndReached:function(){}  其他都会造成异常加载
    3. pageSize={200}每次循环加载数据条数
    4. onEndReachedThreshold={500} 配合onEndReached 到达底部多少像素开始加载
    5. removeClippedSubviews={false} //安卓下开启有bug
    6. scrollRenderAheadDistance={500} //滚动底部多少像素开始加载数据
    7. dataCache 存储数据实现保存历史数据
    8. 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。

      1. 转载请保留文章链接 http://www.reactnative.pw/

        每天进步一点点

ReactNative新手学习之路06滚动更新ListView数据的小示例的更多相关文章

  1. ReactNative新手学习之路07ListView_ renderHeader使用StaticContainer

    react native新手学习之路07ListView_ renderHeader使用StaticContainer 1.某些特殊场景需要用ScrollView滚动和ListView配合但是不幸运的 ...

  2. ReactNative新手学习之路01-创建项目开始

    新手学习之路01-创建项目开始 小菜鸟准备学习RN开发,决定写下自己的学习历程,方便其他也想要学习RN的人,后期会持续更新写下自己所有学习经历,一步步从菜鸟成长成业内高手.开发环境准备,本文默认环境已 ...

  3. ReactNative新手学习之路04 组件化开发轮播图swiper支持安卓和IOS

    react native 新手之路04 组件化开发轮播图swiper支持安卓和IOS npm install react-native-carousel --save git 地址Properties ...

  4. ReactNative新手学习之路03真机调试

    React Native新手入门03真机调试(iOS) 从设备访问开发服务器 在启用开发服务器的情况下,你可以快速的迭代修改应用,然后在设备上查看结果.这样做的前提是你的电脑和设备必须在同一个wifi ...

  5. ReactNative新手学习之路02第一个RN项目

    开始第一个RN项目(iOS版)我的电影列表0.1版,后面做列表版 打开上一节项目 index.ios.js,android打开index.android.js.我这里使用的是Atom编辑器,你也可以使 ...

  6. ReactNative新手学习之路05 使用夜神模拟器调试ReactNative

    1.首先确保adb环境添加到path环境   2.安装好夜神模拟器   3.运行模拟器   4.adb connect 127.0.0.1:62001   5.摇一摇设置IP和端口 如127.168. ...

  7. android ListView中含有按钮事件实时更新ListView数据案例

    1.布局文件Listview <?xml version="1.0" encoding="utf-8"?> <android.support. ...

  8. linux运维、架构之路-K8s滚动更新及回滚

    一.滚动更新        应用程序一次只更新一小部分副本,更新成功后,再更新更多的副本,最终完成所有副本的更新. 滚动更新的优点:零停机,整个更新过程始终有副本在运行,从而保证了业务的连续性. 1. ...

  9. Go语言学习之路(持续更新中)

    菜鸟 Go语言教程 教程(RUNOOB.COM):http://www.runoob.com/go/go-tutorial.html Go全球官网:https://golang.org/ (2018- ...

随机推荐

  1. 更新整理本人所有博文中提供的代码与工具(Java,2013.11)

    为了更方便地管理博文中涉及的各种代码与工具资源,现在把这些资源迁移到 Google Code 中,有兴趣者可前往下载. Java 1.<高效 Java Web 应用开发框架 JessMA v3. ...

  2. Spring(二)__bean的装配

    Bean的装配: 在spring容器内拼凑bean叫做装配.装 配bean的时候,需要告诉容器哪些bean 以及容器如何使用依赖注入将它们配合在一起. 上下文定义文件的根元素是<beans> ...

  3. 彻底解决mysql中文乱码的办法 ???

      MySQL会出现中文乱码的原因不外乎下列几点:1.server本身设定问题,例如还停留在latin12.table的语系设定问题(包含character与collation)3.客户端程式(例如p ...

  4. 缓存、队列(Memcached,Redis,rabbitMQ)

    一.Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的 ...

  5. Egret白鹭H5小游戏开发入门(二)

    前言: 昨天的文章中简单的介绍了Egret白鹭引擎从安装到基本的使用配置等问题,今天着重介绍H5小游戏开发的起步阶段,如Wing面板的使用,素材的处理,类的说明,开始布局等等. 整体概况: 根据上一篇 ...

  6. arcgis server10.2.2发布地图基础服务的具体步骤

    1.直接打开制作好的.mxd文档,比如这里: 2.打开mxd文档之后,打开菜单:file-share as -services 弹出地图发布服务的界面: 点击publish之后,耐心的等待一段时间,地 ...

  7. iOS Xcode 打包之后,不能输出日志

    现象:一个项目,之前做的好好的,后来打包,生成ipa文件之后, 再运行的时候,NSLog的日志都不输出了. 解决方案: 在模式选择里面,里面包含:“Debug”.“Release”两种,设置“Debu ...

  8. Menu创建菜单

    菜单是用户界面中最常见的元素之一,使用非常频繁,在Android中,菜单被分为如下三种,选项菜单(OptionsMenu).上下文菜单(ContextMenu)和子菜单(SubMenu),今天这讲是O ...

  9. 常用API——Math对象型、Number型

    Math.abs(num) : 返回num的绝对值 Math.acos(num) : 返回num的反余弦值 Math.asin(num) : 返回num的反正弦值 Math.atan(num) : 返 ...

  10. jacascript中的原型链以原型

    今地铁上看慕课网js课程,又学习到关于原型的一些知识,记录如下.如有偏差欢迎指正: 三张图要连起来看哦~ 图解: 1.创建一个函数foo. 2.运用函数的prototype属性(这个属性就是实例对象的 ...