ReactNative基础(八)了解FlatList的使用、添加头尾布局、下拉刷新、上拉加载
来源:互联网 发布:cacti不出数据 编辑:程序博客网 时间:2024/06/01 07:47
此博客基于react-native-0.49.3
之前我们已经说过ListView这个控件了、FlatList性质也是一样的只不过使用起来更加封闭、内部封装好了 添加头尾布局、下拉刷新、上拉加载等功能…
实现的效果:
FlatList实现一个最简单的列表
<FlatList //数据源 data={[{key: 'a'}, {key: 'b'}]} //渲染每一个Item renderItem={({item}) => <Text>{item.key}</Text>}/>
来实现一个见的最多的列表,从网络获取数据、解析并展示出来。
- 定义好数据源用来存储加载的网络数据
static defaultProps = { url: 'https://news-at.zhihu.com/api/4/news/latest'};constructor(props) { super(props); this.state = { data: [],//存储列表使用的数据 refreshing: false,//当前的刷新状态 };}
- 渲染FlatList组件
render() { return ( <View style={styles.container}> <FlatList data={this.state.data} keyExtractor={this.keyExtractor} renderItem={this.getView} //添加头尾布局 ListHeaderComponent={this.header} ListFooterComponent={this.footer} //下拉刷新,必须设置refreshing状态 onRefresh={this.onRefresh} refreshing={this.state.refreshing} /> </View> );}
添加头尾布局使用ListHeaderComponent、ListFooterComponent 数据即可,关于FlatList组件更多的属性和方法可以参考官方文档
//头尾布局都是一样,这里就只贴出一个头布局以供参考header = () => { return ( <Text style={{ backgroundColor: '#4398ff', color: 'white', fontSize: 18, textAlign: 'center', textAlignVertical: 'center', height: 150, }}>我是头布局</Text> )};
请求网络数据加载列表数据
//渲染完成,请求网络数据componentDidMount() { fetch(this.props.url) .then((response) => response.json()) .then((response) => { //解析json数据 var json = response['stories']; //更新状态机 this.setState({ data: json, }); }) .catch((error) => { if (error) { //网络错误处理 console.log('error', error); } });}
Item的布局这里就不贴出来了,可以前往文末的源码地址查看。
接下来就是对列表进行刷新操作。
下拉刷新,必须设置refreshing状态
onRefresh={this.onRefresh}
refreshing={this.state.refreshing}
当正在刷新的时候将refreshing=true这样在顶部就可以看到一个刷新的圆圈效果
/** * 下拉属性 */onRefresh = () => { //设置刷新状态为正在刷新 this.setState({ refreshing: true, }); //延时加载 const timer = setTimeout(() => { clearTimeout(timer); //往数组的第一位插入数据,模拟数据新增 , unshift()会返回数组的长度 this.state.data.unshift(new this.ItemData('https://pic2.zhimg.com/v2-8f11b41f995ca5340510c1def1c003d1.jpg', '下拉刷新添加的数据——————' + this.count, 475843)); this.count++; this.setState({ refreshing: false, }); }, 1500);};
ItemData
也就是每条数据的数据格式,这样往我们创建好的·data·数组中添加数据才是符合的。
/** * json 数据实体类 */ItemData(images, title, id) { this.images = new Array(images); this.title = title; this.id = id;}
上拉加载:我这里配置下面两个属性的时候一直出不来效果不知道为什么,有会的大佬欢迎留言或者贴个源码地址,在此感谢大家了。
onEndReachedThreshold={0}onEndReached={this.onEndReached}
源码下载地址
推荐阅读:
- ReactNative基础(一)编写一个登录页面
- ReactNative基础(二)了解组件的生命周期
- ReactNative基础(三)了解ScrollView并打造一个Banner效果
- ReactNative基础(四)了解ListView的使用、实现GridView效果、编写一个真实网络请求案例
- ReactNative基础(五)使用react-navigation实现页面的跳转、参数的传递
- ReactNative基础(六)使用react-navigation实现页面导航布局效果(TabNavigator)
- ReactNative基础(七)js代码与原生代码进行交互、打包APK
阅读全文
1 0
- ReactNative基础(八)了解FlatList的使用、添加头尾布局、下拉刷新、上拉加载
- RecyclerView基本用法(添加分割线,添加头尾布局,下拉刷新上拉加载,添加删除item,以及监听事件)
- react native FlatList使用详解以及上拉刷新下拉加载带可运行demo
- ReactNative下拉刷新上拉加载
- RecyclerView使用详解一代替ListView(点击事件,添加头布局,上拉刷新下拉加载)
- pullview使用flatlist下拉上拉
- XListView 的使用 (上拉加载,下拉刷新)
- Xrecyclerview的使用(上拉刷新,下拉加载)
- ReactNative ListView + 上拉加载更多 + 下拉刷新
- 实现上拉刷新下拉加载的布局
- 上拉加载下拉刷新的RecyclerView可添加headerView
- 好用的ReactNative下拉刷新上拉加载的组件,支持iOS和Android
- 好用的ReactNative下拉刷新上拉加载的组件,支持iOS和Android
- 好用的ReactNative下拉刷新上拉加载的组件,支持iOS和Android
- XRecyclerView如此so easy实现下拉刷新,上拉加载,添加头布局(头布局任意加)
- 你必须了解的RecyclerView的五大开源项目-解决上拉加载、下拉刷新和添加Header、Footer等问题
- 你必须了解的RecyclerView的五大开源项目-解决上拉加载、下拉刷新和添加Header、Footer等问题
- 你必须了解的RecyclerView的五大开源项目-解决上拉加载、下拉刷新和添加Header、Footer等问题
- 套接字 boost asio
- 设计模式(32)--传输对象模式
- RabbitMQ默认端口
- 服务器上传,时间超时 tomcat 如何设置保持连接
- git命令行pull,push解决每次都输入用户名密码
- ReactNative基础(八)了解FlatList的使用、添加头尾布局、下拉刷新、上拉加载
- 复制数组
- MyBatis 框架 2
- recycleview的添加删除
- Gitlab和AD账号集成,账号登录时报错:Invalid credentials
- msp430g2553硬件IIC
- Android自定义Dialog
- 【cocos2d】使用 shader
- poj 3734 Blocks 矩阵乘法优化dp