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 相关文章推荐
清除网页历史记录,屏蔽后退按钮!
Dec 22 Javascript
改变javascript函数内部this指针指向的三种方法
Apr 23 Javascript
修改jquery.lazyload.js实现页面延迟载入
Dec 22 Javascript
jQuery中index()的用法分析
Sep 05 Javascript
推荐9款炫酷的基于jquery的页面特效
Dec 07 Javascript
JavaScript实现添加及删除事件的方法小结
Aug 04 Javascript
Jquery左右滑动插件之实现超级炫酷动画效果附源码下载
Dec 02 Javascript
jQuery时间日期三级联动(推荐)
Nov 27 Javascript
jQuery实现的简单拖动层示例
Feb 22 Javascript
bootstrap常用组件之头部导航实现代码
Apr 20 Javascript
详解Vue2 添加对scss的支持
Jan 02 Javascript
JavaScript实现班级抽签小程序
May 19 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
PHP批量获取网页中所有固定种子链接的方法
2016/11/18 PHP
Python中使用django form表单验证的方法
2017/01/16 PHP
fckeditor 获取文本框值的实现代码
2009/02/09 Javascript
js控制不同的时间段显示不同的css样式的实例代码
2013/11/04 Javascript
jquery复选框全选/取消示例
2013/12/30 Javascript
JavaScript的各种常见函数定义方法
2014/09/16 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
2015/11/07 Javascript
TypeOf这些知识点你了解吗
2016/02/21 Javascript
JavaScript弹窗基础篇
2016/04/27 Javascript
jQuery 3 中的新增功能汇总介绍
2016/06/12 Javascript
BootStrap按钮标签及基本样式
2016/11/23 Javascript
js基于myFocus实现轮播图效果
2017/02/14 Javascript
javascript 组合按键事件监听实现代码
2017/02/21 Javascript
详解Vue用axios发送post请求自动set cookie
2017/05/10 Javascript
微信小程序自定义导航隐藏和显示功能
2017/06/13 Javascript
vue 自定义 select内置组件
2018/04/10 Javascript
微信小程序全局变量的设置、使用、修改过程解析
2019/09/24 Javascript
js轮播图之旋转木马效果
2020/10/13 Javascript
vue 判断页面是首次进入还是再次刷新的实例
2020/11/05 Javascript
[49:56]VG vs Optic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python实现的下载8000首儿歌的代码分享
2014/11/21 Python
教你使用python画一朵花送女朋友
2018/03/29 Python
520使用Python实现“我爱你”表白
2020/05/20 Python
keras 简单 lstm实例(基于one-hot编码)
2020/07/02 Python
ddl,dml和dcl的含义
2016/05/08 面试题
servlet面试题
2012/08/20 面试题
HR喜欢的自荐信格式
2013/10/08 职场文书
清明节扫墓活动方案
2014/03/02 职场文书
消防工作实施方案
2014/06/09 职场文书
村级四风对照检查材料
2014/08/24 职场文书
安全在我心中演讲稿
2014/09/01 职场文书
农村党建工作汇报材料
2014/10/27 职场文书
长江七号观后感
2015/06/11 职场文书
优秀乡村医生事迹材料(2016精选版)
2016/02/29 职场文书
祝福语集锦:给百岁老人祝寿贺词
2019/11/19 职场文书
Python Django ORM连表正反操作技巧
2021/06/13 Python