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 位置函数offset,innerWidth,innerHeight,outerWidth,outerHeight,scrollTop,scrollLeft
Mar 23 Javascript
使用Jquery搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
Jul 10 Javascript
document.getElementById介绍
Sep 13 Javascript
javascript学习笔记(十三) js闭包介绍(转)
Jun 20 Javascript
以JavaScript来实现WordPress中的二级导航菜单的方法
Dec 14 Javascript
详解AngularJS中$http缓存以及处理多个$http请求的方法
Feb 06 Javascript
Javascript之面向对象--封装
Dec 02 Javascript
JavaScript日期工具类DateUtils定义与用法示例
Sep 03 Javascript
浅谈webpack SplitChunksPlugin实用指南
Sep 17 Javascript
javascript+HTML5 canvas绘制时钟功能示例
May 15 Javascript
利用 Chrome Dev Tools 进行页面性能分析的步骤说明(前端性能优化)
Feb 24 Javascript
Vue3.0中Ref与Reactive的区别示例详析
Jul 07 Vue.js
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
全国FM电台频率大全 - 13 福建省
2020/03/11 无线电
水质对咖图啡风味的影响具体有哪些
2021/03/03 冲泡冲煮
PHP语法速查表
2006/12/06 PHP
php生成随机数或者字符串的代码
2008/09/05 PHP
PHP截取指定图片大小的方法
2014/12/10 PHP
高质量PHP代码的50个实用技巧必备(下)
2016/01/22 PHP
Javascript 跨域访问解决方案
2009/02/14 Javascript
解决jquery插件冲突的问题
2014/01/23 Javascript
使用javascript实现简单的选项卡切换
2015/01/09 Javascript
JS交换变量的方法
2015/01/21 Javascript
jquery插件Jplayer使用方法简析
2016/04/22 Javascript
基于javascript编写简单日历
2016/05/02 Javascript
简单易懂的天气插件(代码分享)
2017/02/04 Javascript
JavaScript的六种继承方式(推荐)
2017/06/26 Javascript
shiro授权的实现原理
2017/09/21 Javascript
arcgis for js栅格图层叠加(Raster Layer)问题
2017/11/22 Javascript
深入理解ES6之数据解构的用法
2018/01/13 Javascript
解决vue this.$forceUpdate() 处理页面刷新问题(v-for循环值刷新等)
2018/07/26 Javascript
微信小程序之事件交互操作实例分析
2018/12/03 Javascript
javascript严格模式详解(含严格模式与非严格模式的区别)
2019/11/12 Javascript
[53:15]Mineski vs iG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
详解tensorflow实现迁移学习实例
2018/02/10 Python
Python socket实现多对多全双工通信的方法
2019/02/13 Python
Python爬虫程序架构和运行流程原理解析
2020/03/09 Python
Python sublime安装及配置过程详解
2020/06/29 Python
python使用matplotlib绘制折线图的示例代码
2020/09/22 Python
利用CSS3实现单选框动画特效示例代码
2016/09/26 HTML / CSS
Grow Gorgeous美国官网:只要八天,体验唤醒毛囊后新生的茂密秀发
2018/06/04 全球购物
泰国第一在线超市:Tops
2021/02/13 全球购物
生物学学生自我评价
2014/01/17 职场文书
志愿者活动总结
2014/04/28 职场文书
公共场所禁烟标语
2014/06/25 职场文书
民事诉讼代理委托书
2014/10/08 职场文书
详细介绍python类及类的用法
2021/05/31 Python
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/06 其他游戏
windows server 2016 域环境搭建的方法步骤(图文)
2022/06/25 Servers