React Native学习之 ListView 的简单使用
官方文档详细的介绍了ListView的使用方式。 在这里我简单的进行了实践,拉取网络数据进行显示,触底自动加载更多。代码非常简单,这里直接贴出来。
import React, { Component } from 'react';
import {AppRegistry,StyleSheet,Text,ListView,View,Image
} from 'react-native';var totalList = []; export default class BillProject extends Component { constructor(props) {super(props);const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});this._onEndReached.bind(this);this.state = {dataSource: ds.cloneWithRows([]),loadState:"1", // 1正在加载 2加载完成 3 加载错误 page:0};}render() {console.log("render");return (<ListViewonEndReachedThreshold={2}onEndReached={this._onEndReached.bind(this)}contentContainerStyle={styles.list}enableEmptySections={true}dataSource={this.state.dataSource}renderRow={this._renderRow}/>);}_renderRow(rowData, sectionID, rowID){return (<View style={styles.row}><Image style={styles.thumb} source={{uri: "http://api.all-appp.com/uploads/" + rowData.zuopin_url}}></Image></View>);}componentWillMount(){this.getZuoPinFromApi();}_onEndReached(){console.log("到达底部");//加载更多数据 通过onEndReachedThreshold设置离底部还有几个cell 需要render时触发this.getZuoPinFromApi();}//获取网络数据getZuoPinFromApi() {try {let formData = new FormData(); formData.append("type","3"); formData.append("page",this.state.page); formData.append("userid",""); formData.append("myid","3"); formData.append("filterid",totalList.length > 0 ? totalList[totalList.length-1].zuopin_id : ""); formData.append("customType","1"); formData.append("version","0.2.8");var self = this; var response = fetch('http://api.all-appp.com/api/show',{method: 'POST',headers: {'Accept': 'application/json','Content-Type': 'application/json',},body: formData}).then((response) => response.json()).then((responseJson) => {console.log("response " + response);if(responseJson.code == 0){// self.state.dataSource.cloneWithRows(responseJson.zuopins)// self.state.dataSource.concat(responseJson.zuopins);// self.setState(self.state.dataSource);totalList = totalList.concat(responseJson.zuopins);this.setState({ dataSource: self.state.dataSource.cloneWithRows(totalList), loadState:"1",page:self.state.page + 1}); }else{console.log(responseJson.msg);}}).catch((error) => {console.error(error);});;} catch(error) {console.error(error);}}
}
const styles = StyleSheet.create({list: {marginTop:5,justifyContent: 'space-around',flexDirection: 'row',flexWrap: 'wrap'},row: {justifyContent: 'center',padding: 5,margin: 3,width: 150,height: 150,backgroundColor: '#F6F6F6',alignItems: 'center',borderWidth: 1,borderRadius: 5,borderColor: '#CCC'},thumb: {width: 140,height: 140},text: {flex: 1,marginTop: 5,fontWeight: 'bold'},
});
AppRegistry.registerComponent('BillProject', () => BillProject);复制代码
在constructor方法中新建一个DataSource实例.
#####用到的一部分Listview属性。
onEndReachedThreshold={2} 表示在离底部还有2个row需要render的时候触发 onEndReached 方法。
>onEndReached={this._onEndReached.bind(this)} 利用这个方法进行触底加载更多操作,代码里没有给出加载动画,不过RN给出了一个默认实现属性RefreshControl,你们可以自行尝试。
>enableEmptySections={true} 允许组为空
>renderRow={this._renderRow} 每个cell绘制方法
React Native学习之 ListView 的简单使用相关推荐
- React Native学习提纲
React Native学习提纲 当前版本最后修订日期: 2015年10月21日 一. React.js入门基础 1.基础HTML/CSS与基础开发工具使用 - html基础 doctype.常用标签 ...
- React Native 学习资源精选仓库
<React Native Awesome>这里fork过来的,汇集了各类react-native学习资料.工具.组件.开源App.资源下载.以及相关新闻等,只求精不求全.因后面无法 Pu ...
- React Native 学习资源精选仓库(汇聚知识,分享精华)
React Native 学习资源精选仓库(汇聚知识,分享精华) <React Native Awesome>这里fork过来的,汇集了各类react-native学习资料.工具.组件.开 ...
- iOS开发者React Native学习路线
2019独角兽企业重金招聘Python工程师标准>>> http://blog.talisk.cn/blog/2016/08/13/RN-Learning-path-for-iOS- ...
- React Native 系列(七) -- ListView
前言 本系列是基于React Native版本号0.44.3写的.几乎所有的App都使用了ListView这种组件,这篇文章将学习RN中ListView的平铺样式和分组样式. ListView平铺样式 ...
- react native学习笔记29——动画篇 Animated高级动画
1.前言 上一节我们学习了全局的布局动画api--LayoutAnimation,体验到其流畅柔和的动画效果,但有时我们需要实现一些更精细化的动画,或者完成一些组合动画,这时我们可以使用React N ...
- React Native学习速记
学习路线建议:ES5/6 -> React -> React Native -> Redux + React-Navigation等 ES5 :https://wangdoc.co ...
- react native学习笔记13——FlatList上拉加载
我们可以利用官方组件RefreshControl实现下拉刷新功能,但React Native官方没有提供相应的上拉加载的组件,因此在RN中实现上拉加载比下拉刷新要复杂一点. 虽然没有直接提供上拉加载的 ...
- React Native学习笔记一之搭建开发环境
因为项目需要,今天开始正式学习React Native,先来搭建个开发环境 忐忑的心情 因为项目比较急,而且客户要求使用React Native开发,只能先学点基础然后在项目中使用的时候,边做边学了, ...
最新文章
- SpringBoot与SpringMVC的区别是什么?
- c语言水印添加,[求助]C语言 bmp文件加上水印
- docker 部署 nginx
- 1687: 数组操作(非常规思维)
- 【CASS精品教程】CASS9.1等高线的绘制完整案例教程
- 2022年中国全屋智能行业研究白皮书
- 拿起电话就开始给(飞鸽传书3.0)
- 苹果CMSv10官方版程序包
- odoo 的字段。orm对象
- 追影windows7 虚拟4桌面
- zabbix3.0.4 邮件告警详细配置
- springboot 文件上传 各种姿势 解锁,策略模式简单运用
- 系统学Android从零开始,附超全教程文档
- html游走字幕代码大全,html 滚动字幕代码
- VFP 常用 OCX 控件 注册
- excel随机数_软网推荐:Windows环境下快速生成随机数
- FMI飞马网 | 人工智能/大数据/程序/语言/项目管理/机器学习/Python书籍免费赠书
- 机器人产业化给导电环行业带来的机遇
- Cadence的版图绘制、DRC、LVS、PEX-以反相器为例
- 性能监控与服务器监控
热门文章
- MongoDB 计划缓存的影响
- 华为交换机路由器常用命令
- 微信支付服务器demo,集成微信支付(附带demo)
- go kegg_3分钟了解GO/KEGG功能富集分析
- c#和python_IronPython和C#交互
- flask框架如何实现修改密码和免密登录功能
- java atm 代码_java ATM取钱代码
- mysql的ab测试工具_轻量级性能测试工具ab / wrk / locust 分析 对比
- ACM小白入门之必须要了解的东西
- mysql e 导出数据库_mysql导出数据库几种方法