//练习二 电影列表(网络请求数据)
可参考:
http://www.jianshu.com/p/22de6734d858 /*
* 展示电影列表
* 逻辑:
* 未获得数据时:显示等待页面
* 获得数据时: 显示电影列表页面
*
* 需要给state添加一个属性,用于记录下载状态
*
* http://raw.githubusercontent.com/facebook/react-native/master/docs/MoviesExample
* */ var MovieList = React.createClass({
getInitialState:function () {
//ListView相关
let ds = new ListView.DataSource({rowHasChanged:(r1,r2) => r1!==r2 }); //
return{
load:false //数据是否下载成功的标识
       // data:null
};
},
//下载数据
getData:function () {
let url = "http://www"
fetch(url)
.then((response) => {
return response.json()
})
.then((responseData) => {
//刷新组件,重新渲染组件,展示ListView
//得到新的数据, 更新dataSource
this.setState({
loaded:true,
//ListView
dataSource:this.state.dataSource.cloneWithRows(responseData.movies)
           data: new ListView.DataSource({rowHasChanged: (r1,r2) => r1!==r2 }).cloneWithRows(jsonData.data),  //这样更好理解,在 state 中加入一个 data
              });

          })
.catch((error) => {
alert(error)
}) },
render:function () {
//如果未请求到数据,显示 "等待加载" 页面
if(!this.state.loaded){
return this.renderLoadingView();
} //电影列表
return(
<ListView
style={styles.listView}
dataSource={this.state.dataSource}
initialListSize={10} //多少行
renderHeader={this._renderHeader}
renderRow={this._renderRow}
renderSeparator={this._renderSeparator}
/> );
},
//组件挂载完成
componentDidMount:function () {
//组件挂载后,开始下载数据
this.getData();
}, //等待加载页面
renderLoadingView:function () {
return(
<View style={styles.loadingContainer}>
<Text style={styles.loadingText}>Loading movies...</Text>
</View>
);
},
//渲染row
_renderRow:function (movie) {
return(
<View style={styles.rowContainer}>
<Image
style={styles.rowImage}
source={{uri:movie.url}}
/>
<View style={styles.rowTextContainer}>
<Text style={styles.rowTitle}></Text>
</View>
</View>
)
},
//渲染头部
_renderHeader:function () {
return(
<View style={styles.header}>
<Text style={styels.headerText}>List 头部</Text>
<View style={styles.headerSeparator}></View>
</View>
)
},
//渲染分割线
_renderSeparator:function (sectionID:number,rowID:number) {
var style = {
height:1,
backgrounColor:"#CCCCCC"
};
return(
<View style={style} key={sectionID+rowID}></View>
) } }); var styels = StyleSheet.create({
//loading
loadingContainer:{
flex:1,
marginTop:25,
backgrounColor:'cyan',
justifyContent:'center',
alignItems:'center'
},
loadingText:{
fontSize:22,
textAlign:'center',
marginLeft:11,
marginRight:22 },
//ListView Row
rowContainer:{
flexDirection:"row",
padding:5,
alignItems:"center",
backgrounColor:"#F5FCFF"
},
rowImage:{
width:33,
height:81,
backgrounColor:"gray"
},
rowTextContainer:{
flex:1,
marginLeft:10,
},
rowTitle:{
marginTop:3,
fontSize:18,
textAlign:"center"
},
//ListView Header
header:{
height:44,
backgrounColor:"#F5FCFF"
},
headerText:{
flex:1,
fontSize:18,
fontWeight:"bold",
textAlign:"center"
},
headerSeparator:{
height:1,
backgrounColor:"black" },
//ListView
listView:{
marginTop:25,
backgrounColor:"#F5FCFF" } });

fetch 请求列表ListView的更多相关文章

  1. Android使用Mono c#分段列表视图

    下载source code - 21.7 KB 你想知道如何把多个ListView控件放到一个布局中,但是让它们在显示时表现正确吗 多个列表项?你对它们正确滚动有问题吗?这个例子将向你展示如何组合单独 ...

  2. React Native中的网络请求fetch和简单封装

    React Native中的网络请求fetch使用方法最为简单,但却可以实现大多数的网络请求,需要了解更多的可以访问: https://segmentfault.com/a/1190000003810 ...

  3. Fetch的使用

    import React,{ Component } from 'react'; import { AppRegistry, ListView, Image, Text, StyleSheet, Vi ...

  4. ListView实现下拉动态渲染数据

    欢迎讨论欢迎一起学习:微信jkxx123321 这是一篇关于LIstView实现动态数据渲染的文章![RN] 首先我们讲讲数据是如何来规划的 一般情况下我们有两种规划方案前提比如我们数据是100条+ ...

  5. React-Native基础_5.列表视图ListView 网络数据展示

    //获取网络数据 并用列表展示 豆瓣Top250 api /** * Sample React Native App * https://github.com/facebook/react-nativ ...

  6. React Native探索(五)使用fetch进行网络请求

    相关文章 React Native探索系列 前言 React Native可以使用多种方式来请求网络,比如fetch.XMLHttpRequest以及基于它们封装的框架,fetch可以说是替代XMLH ...

  7. react-native ListView 封装 实现 下拉刷新/上拉加载更多

    1.PageListView 组件封装 src/components/PageListView/index.js /** * 上拉刷新/下拉加载更多 组件 */ import React, { Com ...

  8. react-native 项目实战 -- 新闻客户端(6) -- 完善ListView头部视图

    1.因为需要定时器,所以我们要cd到当前项目根目录下安装这个类库: $ npm i react-timer-mixin --save 2.Component/ScrollImage.js /** * ...

  9. fetch格式

    fetch('url'+参数a, { method: "GET", body: json } .then(res => response.json()) .then(cons ...

随机推荐

  1. hive1.2.1问题集锦

    1.启动hive报错: Logging initialized using configuration in jar:file:/usr/local/hive-1.2.1/lib/hive-commo ...

  2. 解决ImportError: libmysqlclient_r.so.16: cannot open shared object file-乾颐堂

    在开发一个python项目是,需要用到mysql,但是, 安装完mysql-python后import加载模块提示以下错误: ImportError: libmysqlclient_r.so.16: ...

  3. tp5 sql 大于小于

    1.大于 $rwhere['ctime'] = array('egt',10000); 2.小于 $rwhere[);

  4. laravel form表单提交

    控制器 中间层 中间层

  5. Web测试-day

    昨天太忙忘了写博客,今天补上: 这两天完成的工作: 我们组选定了博客园和CSDN作为对比,进行Web测试. 胡俊辉--找到了10个网页的bug,并完成了bug记录文档,并且对CSDN和博客园进行功能分 ...

  6. MySQL 存储过程 -光标的使用

    #四.光标的使用 #声明光标 语法:DECLARE 光标名字 CURSOR FOR sql语句 #打开光标 OPEN 光标名称 #使用光标 FETCH 光标名称 into ... #关闭光标 CLOS ...

  7. UVa 11324 The Largest Clique (强连通分量+DP)

    题意:给定一个有向图,求一个最大的结点集,使得任意两个结点,要么 u 能到 v,要么 v 到u. 析:首先,如果是同一个连通分量,那么要么全选,要么全不选,然后我们就可以先把强连通分量先求出来,然后缩 ...

  8. 编写高质量代码改善C#程序的157个建议——建议94:区别对待override和new

    建议94:区别对待override和new override和new使类型体系应为继承而呈现出多态性.多态要求子类具有与基类同名的方法,override和new的作用就是: 如果子类中的方法前面带有n ...

  9. 编写高质量代码改善C#程序的157个建议——建议81:使用Parallel简化同步状态下Task的使用

    建议81:使用Parallel简化同步状态下Task的使用 在命名空间System.Threading.Tasks中,有一个静态类Parallel简化了在同步状态下的Task的操作.Parallel主 ...

  10. CodeForces 499D. Name That Tune(概率dp)

    It turns out that you are a great fan of rock band AC/PE. Peter learned that and started the followi ...