react-infinite-scroller使用
import React from 'react'
import InfiniteScroll from 'react-infinite-scroller'
import axios from 'axios'
import qs from 'qs'
import './style.less'
const arr = [ 'a', 'b', 'c', 'd', 'e']
export default class extends React.PureComponent {
constructor (props) {
super(props)
this.state = {
hasMore: true, // 是否开启下拉加载
data: [], // 接受我每次的数据
count: 10, //下拉加载
}
this.loadMoreData()
}
// 加载更多数据
loadMoreData(){
const { data, count } = this.state
// 超过条数 禁止加载
if (data.length >= count) {
this.setState({
hasMore: false
},()=>{
return false
)
}
// page 是当前请求第几页数据
// limit 每页我需要返回的数据条数
axios.post('https://blogs.zdldove.top/Home/Apis/listWithPage',qs.stringify({page, limit: 20}))
.then(res => {
this.setState({
data: [...data, ...arr], //拼接每次加载的数据 arr是我自定义的数据
count: res.data.result.count,
}, () => {
console.log(this.state) //查看数据是否已经改变
})
})
.catch(err => console.log(err))
}
render () {
const { hasMore } = this.state
return (
<div className="box">
{/* 下拉加载 */}
<InfiniteScroll
pageStart={0} // 设置初始化请求的页数
loadMore={()=>this.loadMoreData()} // 监听的ajax请求
hasMore={hasMore} // 是否继续监听滚动事件 true 监听 | false 不再监听
>
<div className="pages-hoc">
{
this.state.data.map((value, key) => (
<p key={key}> {key} </p>