React native ListView 增加顶部下拉刷新和底下点击刷新示例

网友投稿 347 2023-02-07


React native ListView 增加顶部下拉刷新和底下点击刷新示例

1. 底部点击刷新

1.1 先增加一个按钮

render() {

if(!this.state.data){

return(

Loading...

)

}else{

return(

refreshControl={

refreshing = {false}

onRefresh = {this.reloadWordData.bind(this)}

/>

}

dataSource={this.state.data}

renderRow={(rowData)=>this.renderRow(rowData)}

renderFooter={this.renderFooter.bind(this)}

>

refreshControl={

refreshing = {false}

onRefresh = {this.reloadWordData.bind(this)}

/>

}

dataSource={this.state.data}

renderRow={(rowData)=>this.renderRow(rowData)}

renderFooter={this.renderFooter.bind(this)}

>

refreshing = {false}

onRefresh = {this.reloadWordData.bind(this)}

/>

}

dataSource={this.state.data}

renderRow={(rowData)=>this.renderRow(rowData)}

renderFooter={this.renderFooter.bind(this)}

>

);

}

}

renderFooter(){

return (

onPress={this.addMoreOnFoot.bind(this)}

title="点击载入更多"

/>

)

}

给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 !=eThdA r2}).cloneWithRows(rowData),

})

}

})

.catch((error)=>{

alert(error);

});

}

点击后进行网络处理,把之前最后一条id也传给服务器,让服务器返回这个id后面的20条记录。然后重新setState即可。

2. 头部下拉刷新

ListView中增加RefeshControl

render() {

if(!this.state.data){

return(

Loading...

)

}else{

return(

refreshControl={

<RefreshControl

refreshing = {false}

onRefresh = {this.reloadWordData.bind(this)}

/>

}

dataSource={this.state.data}

renderRow={(rowData)=>this.renderRow(rowData)}

renderFooter={this.renderFooter.bind(this)}

>

refreshControl={

<RefreshControl

refreshing = {false}

onRefresh = {this.reloadWordData.bind(this)}

/>

}

dataSource={this.state.data}

renderRow={(rowData)=>this.renderRow(rowData)}

renderFooter={this.renderFooter.bind(this)}

>

);

}

}

载入最新的头部数据添加到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);

});

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:vue中post请求以a=a&b=b 的格式写遇到的问题
下一篇:Struts2的配置文件方法小结
相关文章

 发表评论

暂时没有评论,来抢沙发吧~