React native ListView 增加顶部下拉刷新和底下点击刷新示例


Posted in Javascript onApril 27, 2018

1. 底部点击刷新

1.1 先增加一个按钮 

React native ListView 增加顶部下拉刷新和底下点击刷新示例

render() {
  if(!this.state.data){
   return(
     <Text>Loading... </Text>
   )
  }else{
   return(
     <ListView
      refreshControl={
       <RefreshControl 
         refreshing = {false}
         onRefresh = {this.reloadWordData.bind(this)}
       />
      }
      dataSource={this.state.data}
      renderRow={(rowData)=>this.renderRow(rowData)}
      renderFooter={this.renderFooter.bind(this)}
     >
      </ListView>
 
   );
  }
 }
 
renderFooter(){
   return (
   <View style={{marginVertical: 10, marginBottom:20}} >
      <Button
       onPress={this.addMoreOnFoot.bind(this)}
       title="点击载入更多"
      />
    </View>
   )
 }

给ListView 增加一个renderFooter 方法来绘制底部元素。在里面显示一个按钮。

按钮处理逻辑:

addMoreOnFoot(){
 // alert('addMoreOnFoot')
 // console.log('addMoreOnFoot')
 const url = 'http://127.0.0.1/getFootContent?lastid=' + this.state.footLastId + '&count=20&isTop=0'
 fetch(url)
 .then((response)=>response.json())
 .then((jsondata)=>{
   if (jsondata.data && jsondata.data.length > 0){
   const rowData = this.state.jsondata.concat(jsondata.data);
   this.setState({
    footLastId:jsondata.data[jsondata.data.length - 1]['id'],
    jsondata:rowData,
    data:new ListView.DataSource({rowHasChanged:(r1, r2) => r1 != r2}).cloneWithRows(rowData),
   })
   }
 })
 .catch((error)=>{
  alert(error);
 });
}

点击后进行网络处理,把之前最后一条id也传给服务器,让服务器返回这个id后面的20条记录。然后重新setState即可。

2. 头部下拉刷新

ListView中增加RefeshControl

render() {
  if(!this.state.data){
   return(
     <Text>Loading... </Text>
   )
  }else{
   return(
 
     <ListView
      refreshControl={
       <RefreshControl 
         refreshing = {false}
         onRefresh = {this.reloadWordData.bind(this)}
       />
      }
      dataSource={this.state.data}
      renderRow={(rowData)=>this.renderRow(rowData)}
      renderFooter={this.renderFooter.bind(this)}
     >
      </ListView>
 
   );
  }
 }

载入最新的头部数据添加到this.State中

reloadWordData(){
  // alert(this.state.topLastId)
  const url = 'http://127.0.0.1/getFootContent?lastid=' + this.state.topLastId + '&count=20&isTop=1'
  fetch(url)
  .then((response)=>response.json())
  .then((jsondata)=>{
    if (jsondata.data && jsondata.data.length > 0){
    const rowData = jsondata.data.concat(this.state.jsondata);
    this.setState({
     topLastId:jsondata.data[0]['id'],
     jsondata:rowData,
     data:new ListView.DataSource({rowHasChanged:(r1, r2) => r1 != r2}).cloneWithRows(rowData),
    })
    }
  })
  .catch((error)=>{
   alert(error);
  });
 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript实例教程(19) 使用HoTMetal(1)
Dec 23 Javascript
可以文本显示的公告栏的js代码
Mar 11 Javascript
javascript 数组学习资料收集
Apr 11 Javascript
jQuery获取css z-index在各种浏览器中的返回值
Sep 15 Javascript
JavaScript的各种常见函数定义方法
Sep 16 Javascript
纯原生js实现贪吃蛇游戏
Apr 16 Javascript
vue-router项目实战总结篇
Feb 11 Javascript
Vue 实现双向绑定的四种方法
Mar 16 Javascript
基于angular6.0实现的一个组件懒加载功能示例
Apr 12 Javascript
详解nuxt路由鉴权(express模板)
Nov 21 Javascript
vue使用video.js进行视频播放功能
Jul 18 Javascript
JavaScript实现多文件下载方法解析
Aug 07 Javascript
React Native日期时间选择组件的示例代码
Apr 27 #Javascript
vue实现点击展开点击收起效果
Apr 27 #Javascript
vue中post请求以a=a&amp;b=b 的格式写遇到的问题
Apr 27 #Javascript
vue项目中应用ueditor自定义上传按钮功能
Apr 27 #Javascript
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
Apr 27 #Javascript
微信小程序中添加客服按钮contact-button功能
Apr 27 #Javascript
Node.js文件编码格式的转换的方法
Apr 27 #Javascript
You might like
《魔兽争霸3:重制版》更新 多项视觉效果调整
2020/05/04 魔兽争霸
PHP删除数组中的特定元素的代码
2012/06/28 PHP
php自动更新版权信息显示的方法
2015/06/19 PHP
PHP获取指定月份第一天和最后一天的方法
2015/07/18 PHP
PHP实现的观察者模式实例
2017/06/21 PHP
PHP实现网站访问量计数器
2017/10/27 PHP
Nigma vs Alliance BO5 第四场2.14
2021/03/10 DOTA
JS+XML 省份和城市之间的联动实现代码
2009/10/14 Javascript
js修改地址栏URL参数解决url参数问题
2012/12/15 Javascript
使用js实现关闭js弹出层的窗口
2014/02/10 Javascript
script标签属性用type还是language
2015/01/21 Javascript
基于nodejs+express(4.x+)实现文件上传功能
2015/11/23 NodeJs
JS实现密码框根据焦点的获取与失去控制文字的消失与显示效果
2015/11/26 Javascript
JavaScript实现的select点菜功能示例
2017/01/16 Javascript
微信小程序侧边栏滑动特效(左右滑动)
2017/01/23 Javascript
Vuejs在v-for中,利用index来对第一项添加class的方法
2018/03/03 Javascript
通过一次报错详细谈谈Point事件
2018/05/17 Javascript
用js简单提供增删改查接口
2019/05/12 Javascript
[09:37]DOTA2卡尔工作室 英雄介绍圣堂刺客篇
2013/06/13 DOTA
Python利用BeautifulSoup解析Html的方法示例
2017/07/30 Python
pandas 将list切分后存入DataFrame中的实例
2018/07/03 Python
使用python生成杨辉三角形的示例代码
2018/08/29 Python
Python使用matplotlib实现交换式图形显示功能示例
2019/09/06 Python
python中open函数的基本用法示例
2019/09/07 Python
详解Python绘图Turtle库
2019/10/12 Python
python和node.js生成当前时间戳的示例
2020/09/29 Python
欧缇丽英国官方网站:Caudalie英国
2016/08/17 全球购物
家乐福巴西网上超市:Carrefour巴西
2016/10/31 全球购物
微软中国官方商城:Microsoft Store中国
2018/10/12 全球购物
波兰运动鞋网上商店:Distance.pl
2020/07/30 全球购物
自动化专业个人求职信范文
2013/11/29 职场文书
重阳节演讲稿:尊敬帮助老人 弘扬传统美德
2014/09/25 职场文书
紫日观后感
2015/06/05 职场文书
关于五一放假的通知
2015/08/18 职场文书
英语版自我评价,35句话轻松搞定
2019/10/08 职场文书
世界十大评分最高的动漫,CLANNAD上榜,第八赚足人们眼泪
2022/03/18 日漫