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 相关文章推荐
基于jQuery的消息提示插件之旅 DivAlert(三)
Apr 01 Javascript
jQuery EasyUI API 中文文档 - MenuButton菜单按钮使用介绍
Oct 06 Javascript
Javascript setInterval的两种调用方法(实例讲解)
Nov 29 Javascript
JavaScript中判断整字类型最简洁的实现方法
Nov 08 Javascript
简介JavaScript中用于处理正切的Math.tan()方法
Jun 15 Javascript
node.js express安装及示例网站搭建方法(分享)
Aug 22 Javascript
Angular2库初探
Mar 01 Javascript
详解ES6语法之可迭代协议和迭代器协议
Jan 13 Javascript
浅谈webpack 构建性能优化策略小结
Jun 13 Javascript
Angular中sweetalert弹框的基本使用教程
Jul 22 Javascript
vue 项目build错误异常的解决方法
Apr 22 Javascript
微信小程序实现form表单本地储存数据
Jun 27 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配置php-fpm启动参数及配置详解
2013/11/04 PHP
PHP中curl_setopt函数用法实例分析
2015/04/16 PHP
laravel 自定义常量的两种方案
2019/10/14 PHP
飞鱼(shqlsl) javascript作品集
2006/12/16 Javascript
JavaScript 拾漏补遗
2009/12/27 Javascript
ExtJs 表单提交登陆实现代码
2010/08/19 Javascript
TinyMCE 新增本地图片上传功能
2010/11/05 Javascript
node.js中的fs.writeSync方法使用说明
2014/12/15 Javascript
JavaScript返回网页中锚点数目的方法
2015/04/03 Javascript
javascript中CheckBox全选终极方案
2015/05/20 Javascript
jQuery中的通配符选择器使用总结
2016/05/30 Javascript
a标签跳转到指定div,jquery添加和移除class属性的实现方法
2016/10/10 Javascript
jQuery继承extend用法详解
2016/10/10 Javascript
全面解析vue router 基本使用(动态路由,嵌套路由)
2018/09/02 Javascript
深入解析Vue源码实例挂载与编译流程实现思路详解
2019/05/05 Javascript
tracking.js实现前端人脸识别功能
2020/04/16 Javascript
Python中函数及默认参数的定义与调用操作实例分析
2017/07/25 Python
Python实现的归并排序算法示例
2017/11/21 Python
python3爬取各类天气信息
2018/02/24 Python
Python基于SMTP协议实现发送邮件功能详解
2018/08/14 Python
Python调用C++,通过Pybind11制作Python接口
2018/10/16 Python
Python实现FTP文件传输的实例
2019/07/07 Python
python输出数组中指定元素的所有索引示例
2019/12/06 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
2020/02/29 Python
Python实现给PDF添加水印的方法
2021/01/25 Python
JSF如何进行表格处理及取值
2012/08/06 面试题
2019年Java面试必问之经典试题
2012/09/12 面试题
报纸媒体创意广告词
2014/03/17 职场文书
医学求职自荐信
2014/06/21 职场文书
2014年信贷员工作总结
2014/11/18 职场文书
工厂采购员岗位职责
2015/04/07 职场文书
公积金贷款承诺书
2015/04/30 职场文书
SQL Server 数据库实验课第五周——常用查询条件
2021/04/05 SQL Server
golang日志包logger的用法详解
2021/05/05 Golang
java objectUtils 使用可能会出现的问题
2022/02/28 Java/Android
Beekeeper Studio开源数据库管理工具比Navicat更炫酷
2022/06/21 数据库