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 相关文章推荐
firefox中用javascript实现鼠标位置的定位
Jun 17 Javascript
JS OOP包机制,类创建的方法定义
Nov 02 Javascript
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
Jan 22 Javascript
jquery 得到当前页面高度和宽度的两个函数
Feb 21 Javascript
js里怎么取select标签里的值并修改
Dec 10 Javascript
用jquery写的一个万年历(自写)
Jan 20 Javascript
js阻止默认浏览器行为与冒泡行为的实现代码
May 15 Javascript
js小数计算小数点后显示多位小数的实现方法
May 30 Javascript
浅谈 Vue v-model指令的实现原理
Jun 08 Javascript
在vue-cli脚手架中配置一个vue-router前端路由
Jul 03 Javascript
ES6 Iterator接口和for...of循环用法分析
Jul 31 Javascript
javascript实现左右缓动动画函数
Nov 25 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不用递归实现无限分级的例子分享
2014/04/18 PHP
PHP的switch判断语句的“高级”用法详解
2014/10/01 PHP
php实现html标签闭合检测与修复方法
2015/07/09 PHP
php使用curl详细解析及问题汇总
2016/08/11 PHP
Javascript实现关联数据(Linked Data)查询及注意细节
2013/02/22 Javascript
JavaScript实现图片懒加载(Lazyload)
2016/11/28 Javascript
Angular之指令Directive用法详解
2017/03/01 Javascript
js实现倒计时效果(小于10补零)
2017/03/08 Javascript
vue.js利用Object.defineProperty实现双向绑定
2017/03/09 Javascript
微信小程序动态增加按钮组件
2018/09/14 Javascript
微信小程序发送短信验证码完整实例
2019/01/07 Javascript
js获取form表单中name属性的值
2019/02/27 Javascript
关于在LayUI中使用AJAX提交巨坑记录
2019/10/25 Javascript
微信小程序纯文本实现@功能
2020/04/08 Javascript
[03:26]回顾2015国际邀请赛中国区预选赛
2015/06/09 DOTA
[01:07:53]RNG vs VG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
[01:18]PWL开团时刻DAY4——圣剑与抢盾
2020/11/03 DOTA
python里使用正则表达式的组嵌套实例详解
2017/10/24 Python
分享6个隐藏的python功能
2017/12/07 Python
详解python中的hashlib模块的使用
2019/04/22 Python
python爬虫实现获取下一页代码
2020/03/13 Python
HTML5进阶段内联标签汇总(小篇)
2016/07/13 HTML / CSS
澳大利亚足球鞋和服装购物网站:Ultra Football
2018/10/11 全球购物
应征英语教师求职信
2013/11/27 职场文书
高中生学习生活的自我评价
2013/11/27 职场文书
工厂厂长的职责
2013/12/12 职场文书
祖国在我心中演讲稿
2014/01/15 职场文书
有趣的广告词
2014/03/18 职场文书
勤奋学习演讲稿
2014/05/10 职场文书
学生实习证明模板汇总
2014/09/25 职场文书
商务宴请邀请函范文
2015/02/02 职场文书
2016幼儿园毕业感言
2015/12/08 职场文书
九年级数学教学反思
2016/02/17 职场文书
oracle覆盖导入dmp文件的2种方法
2021/05/21 Oracle
MySQL 百万级数据的4种查询优化方式
2021/06/07 MySQL
Java多线程并发FutureTask使用详解
2022/06/28 Java/Android