React-Native应用ListView实现上拉下拉刷新效果实践
来源:互联网 发布:沈阳软件学院 编辑:程序博客网 时间:2024/05/17 12:49
前言
在移动应用中,上拉刷新加载更多,下拉刷新列表的操作非常常见,那么在React-Native中应该如何实现呢,我们具体来看一下?
必备的组件
- ListView:效果和ScrollView比较类似,但是效率会高些,因为只渲染当前屏幕显示的数据。
- RefreshControl:这是一个组件嵌入到ListView,ScrollView中,实现刷新的效果。
上面两个组件都是RN自带的组件的实现起来比较容易。
实现方法
对于上拉刷新我们需要引入ActivityIndicator, 这是最近几个版本才有的组件,之前叫做ActivityIndicatorIOS. 目前可以支持Android和IOS两个系统。
引入组件:
import { ListView, RefreshControl, ActivityIndicator} from 'react-native';
具体代码:
reloadWordData() { return new Promise((resolve) => { setTimeout(()=>{resolve()}, 2000) }); } renderFooter() { return <ActivityIndicator />; } render() { return ( <View style={GeneralStyle.container}> <Spinner visible={this.state.visible} textStyle={{color: '#FFF'}} /> <ListView refreshControl={ <RefreshControl refreshing={false} onRefresh={this.reloadWordData.bind(this)} />} dataSource={this.state.dataSource} renderRow={this.renderRow} renderFooter={this.renderFooter} /> </View> ); }
对于下拉操作我们只要嵌入RefreshControl即可,即定义个prop,并且定义一个刷新触发的方法,和控制是否刷新的状态。
refreshControl={ <RefreshControl refreshing={false} onRefresh={this.reloadWordData.bind(this)} />}
对于上拉,需要变相处理,生成一个footer, ListView中存在一个
renderFooter() { if(this.state&&this.state.isShowBottomRefresh){ return (<View style={{marginVertical: 10}}> <ActivityIndicator /> </View>); } return <View style={{marginVertical: 10}} />;; }
当页面滚动底部是会自动触发onEndReached方法,这里存在一个问题,就是在这个方法中执行setState的时候,onEndReach会因此被触发两次,所以需要判断一下,在官方demo中同样存在这个代码。
onEndReached() { if(this.isFirstTime){ if(!this.state.isShowBottomRefresh){ this.isFirstTime = false; } return; } this.isFirstTime = true; this.setState({isShowBottomRefresh: true}); setTimeout(()=>{ this.isFirstTime = true; this.setState({ isShowBottomRefresh: false }); },4000); }
效果图
1 0
- React-Native应用ListView实现上拉下拉刷新效果实践
- react native 上拉下拉刷新
- ListView上拉下拉刷新
- listview 上拉下拉刷新Demo
- 《ReactNative》之ListView上拉下拉刷新
- react native之listview加下拉刷新上拉分页
- React-native IT喵~ ScrollView 嵌套ListView 如何实现上拉加载、下拉刷新
- SwipeRefreshLayout实现上拉下拉刷新
- html5上拉下拉刷新分页实现
- PullToRefresh的实现上拉下拉刷新
- ionic上拉下拉效果应用
- pullToRefresh使用(实现listview上拉下拉)
- pullToRefresh使用(实现listview上拉下拉)
- react native实现上拉加载下拉刷新
- react native实现上拉加载下拉刷新
- react-native-pull实现上拉加载下拉刷新
- 自定义LinearLayout,实现上拉下拉刷新,支持ListView,GridView,ScrollView
- 复杂一点的 listview + header实现 上拉下拉刷新就行了
- 获取某月有多少天
- Java并发编程的艺术(二)——重排序
- 为什么开源可以提高程序员的编程技能?
- 【菜鸟数据库学习日记】从头开始学MySQL(3)
- butter knife详解和使用
- React-Native应用ListView实现上拉下拉刷新效果实践
- android实现TextView、ImageView等按压效果
- 2017.1.13 周五
- C#根据文件路径获取该文件夹路径、文件名、后缀名
- codeforces 757 C. Felicity is Coming!
- 生成验证码
- Ehcache小结(一)
- 在spring boot项目中应用swagger2
- SyntaxNet是否可以实现中文语义分析