问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

react-native 除了改变datasource还有什么方法让listview刷新

发布网友 发布时间:2022-04-22 22:26

我来回答

2个回答

懂视网 时间:2022-04-23 02:47

这次给大家带来怎样使用React native ListView增加顶部下拉刷新和底下点击刷新,使用React native ListView增加顶部下拉刷新和底下点击刷新的注意事项有哪些,下面就是实战案例,一起来看一下。

1. 底部点击刷新

1.1 先增加一个按钮

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);
 });
 }

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

如何使用vue.extend实现alert模态框弹窗组件

如何使用vue组件实现弹出框点击显示隐藏

热心网友 时间:2022-04-22 23:55

修改URL地址:打开项目目录下的AppDelegate.m文件, 修改里面的URL,把localhost改为你的电脑的IP。在Mac系统下,你可以在系统设置/网络里找到电脑的IP地址。 选择设备:把手机插上数据线,连接到你的电脑,这时候就可以在调试设备里,看到你自...
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
说课包括哪些方面 说课内容包括()。 如何在手机百度上删除对话记录? 结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? 罪恶王冠里结局看完什么个意思? 《怒火重案》结局看哭了,最后对话太戳心,互换身份会一样吗? 四川潼岚科技有限公司怎么样? 英语翻译 1.东莞市石碣镇同富西路石碣二村地磅3号铺 2.东莞市石碣达兴包装材料经营部 吉林市达兴化工经销有限公司怎么样? 曲靖市沾益区达兴沥青混凝土制造有限公司怎么样? 厦门达兴昌包装材料有限公司怎么样? 昆山松达兴包装材料有限公司怎么样? 宝鸡市盛达兴金属材料有限公司怎么样? 台湾明基旗下有哪些子公司?请知道的帮忙说下.谢谢! 重庆达兴建筑科技有限公司怎么样? 苏州佳世达,明基电通,明基逐鹿 关系 天津市宁河县达兴建筑材料有限公司怎么样? 陌陌啥子版本可以视频吗? 写出50个带有鸟的汉字还有哪些带鸟的字 换机什么用啊? mukuzani2014是什么红酒,多少钱? 在重庆去拉萨 重庆机场的时候5月份应该穿什么 还是就穿夏装 到了贡嘎机场过后再换厚衣服 五一期间拉萨的天气 五六月份拉萨天气怎么样,去拉萨需要带什么样的衣服 千与千寻结局看不懂 产妇可以吃黄刺鱼吗 学校强制要求购买了三年的保险,没有个保单,都快一年了,合法吗? 怎么打开驱动页面 2015注册安全工程师报名时间错过了,有其他办法补报? 注册安全工程师学籍备案截止时间 港澳资讯是民营还是国企 港澳资讯的法人代表是谁 请问唐骏的港澳资讯产业股份有限公司怎么样? 网约车申请表怎么打印 谁买过这款手机,拍照清晰吗? 哪位大神有天降爱情,2018年哇提勒维·拍桑固翁、甘莫内·仁希主演的泰国电视剧免费百度云资源? 好看的闺蜜动漫图片 请问你是从哪里看的老婆的闺蜜漫画? 类似这样的图片:漫画 三人 闺蜜。注意,三人在一张图片上!多发些。谢谢! react native listview怎么改变状态 简单课堂的免费网课结束了吗? 跪求!有人可以让我分享一下,简单学习网的课程吗??感激不尽!!!! 简单课堂中的免费试听为什么结束了? 简单学习网应该用什么打开