在许多的应用场景中都会存在的功能点,在商品列表展示时,所展示的仅仅是一部分数据,并非是完全展示,在存在大量数据时展示的所有的会导致页面渲染缓慢的问题,所以都是通过功能触发,增加更多的数据展示
第一步:
npm i antd-mobile //引入组件库
import { InfiniteScroll, List } from 'antd-mobile'
import { sleep } from 'antd-mobile/es/utils/sleep'
使用InfiniteScroll组件,sleep实现计时效果
const [hasMore, setHasMore] = useState(true) //判断是否还有数据需要进行加载
const [sedlist, setSedlist] = useState([]) //数据集合
async function loadMore() {
const append = await mockRequest()
setSedlist(val => [...val, ...append])
setHasMore(append.length > 0)
}
const [count, setCount] = useState(0)
async function mockRequest() {
if (count >= 3) {
return []
}
var datas = []
axios.get("http://localhost:3010/shopedlist?keyname=" + knamed).then(data => {
console.log('data.data.data.channels', data.data.data)
// setToplisted([...data.data.data.channels])
datas = data.data.data.slice(count * 5, (count + 1) * 5)
})
await sleep(1000)
let num = count
num++
setCount(num)
return datas
}
<div className='searedlist'>
{sedlist.map(item => {
return (
<div className='sitem' key={item._id} onClick={() => godetails(item)}>
<div className='itimg'>
<img src={item.simg[0]} />
</div>
<div className='itcon'>
<p>{item.sname}</p>
<span>¥{item.price}</span>
</div>
</div>
)
})}
<InfiniteScroll loadMore={loadMore} hasMore={hasMore} />
</div>