umi antd实现上拉刷新下拉加载

将umi 中的@umijs/preset-react升级到2版本

新建主页面index.tsx

import React, { useEffect, useState } from 'react'
import { InfiniteScroll, List,PullToRefresh } from 'antd-mobile'
import { mockRequest } from './mock-request'
import axios from 'axios'
import { sleep } from 'antd-mobile/es/utils/sleep'
export default () => {
  useEffect(() => {
    datalist()
  }, [])
  //获取首次渲染的数据
  function datalist() {
    axios.get('/api/list').then(val => {
      setData(val.data.data)
    })
  }
  //首次展示的数据
  const [data, setData] = useState<string[]>([])
  const [hasMore, setHasMore] = useState(true)
  //下拉刷新后要展示的数据
  async function loadMore() {
    const append = await mockRequest()
    setData(val => [...val, ...append])
    setHasMore(append.length > 0)
  }

  return (
    <>
    {/** 下拉刷新操作**/}
     <PullToRefresh
      onRefresh={async () => {
        await sleep(1000)
        const append = await mockRequest()
        setData(val => [ ...append,...val])
      }}
    >
      {/* 数据展示 */}
       <List>
        {data.map((item, index) => (
          <List.Item key={index}>
            <div style={{height:'200px'}}>
            {item.name}
            </div>
          </List.Item>
        ))}
      </List>
    </PullToRefresh>
     {/* 上拉刷新操作 */}
      <InfiniteScroll loadMore={loadMore} hasMore={hasMore} />
    </>
  )
}

同级目录建文件mock-request.tsx文件

import { sleep } from 'antd-mobile/es/utils/sleep'


let count = 1
import  axios from 'axios' 
export async function mockRequest() {
  count++
  await sleep(2000)
//   获取每次更新的数据
    let {data:{data}} = await axios.get('/api/list?page='+count)
    return data
}

node后端配置每次请求的数据

var express = require('express');
var router = express.Router();
var {goodModile} = require('../modul/modul')


router.get('/list',async(req,res)=>{
  // 当前页   默认为1
  let page = req.query.page||1
// 每页多少条数据
  let pageSize = 5
  let data = await goodModile.find().limit(pageSize).skip((page-1)*pageSize)
  res.send({
    code:200,
    data,

  })
})
module.exports = router;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值