react中使用axios,下拉刷新怎么翻页获取列表?

发布于 2022-09-11 16:35:35 字数 2756 浏览 12 评论 0

react中使用axios,下拉刷新怎么翻页获取列表?
下面的代码是获取文章列表demo,用的ant-mobile的ListView组件:https://mobile.ant.design/com...

ArticleList.js

import React, { useState, useEffect} from "react";
import { ListView,Card, WhiteSpace,Grid } from 'antd-mobile';
import axios from 'axios';
import './ArticleList.less';



function ArticleList() {
  const [isLoading, setIsLoading] = useState(true);
  const [dataSource, setDataSource] = useState([]);

  useEffect(() => {
      axios.get('http://192.168.33.3/articles', {
          params: {limit:10,offset:5}
      }).then((response) => {
          setDataSource(response.data);
      }).catch(function (error) {
          throw new Error(error);
      }).then(function () {
          setIsLoading(false);
      });
  });

  let onEndReached = (event) => {
/*    if (isLoading && !this.state.hasMore) {  // hasMore: from backend data, indicates whether it is the last page, here is false
      return;
    }*/
    setIsLoading(true);
    axios.get('/articles', {
          params: {limit:10,offset:5}
    }).then((response) => {
          setDataSource([...dataSource,...response.data]);
    }).catch(function (error) {
          throw new Error(error);
    }).then(function () {
          setIsLoading(false);
    });
  };

  let listItem = (props) => {
        return (
            <div key={props.id}>
                <WhiteSpace size="lg" />
                <Card full>
                    <Card.Header title={props.user.username} thumb={props.user.avatar}/>
                    <Card.Body>
                        <div>{props.content}</div>
                    </Card.Body>
                    <Card.Footer content={props.comment_count} />
                </Card>
            </div>
        );
  };

  return (
      <ListView
          dataSource={dataSource}
          renderFooter={() => (<div style={{ padding: 30, textAlign: 'center' }}>{isLoading ? 'Loading...' : 'Loaded'}</div>)}
          renderRow={listItem}
          className="am-list"
          pageSize={4}
          useBodyScroll
          scrollRenderAheadDistance={500}
          onEndReached={onEndReached}
          onEndReachedThreshold={10}
      />
  );
}

export default ArticleList;

问题:
1、axios怎么翻页获取文章?
2、上面代码中有一段注释了的代码:

/*    if (isLoading && !this.state.hasMore) {  // hasMore: from backend data, indicates whether it is the last page, here is false
      return;
    }*/

hasMore应该设置在什么地方?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

还如梦归 2022-09-18 16:35:35

1、每请求一次,page +1
2、hasMore可以后端返回,有下一页就为真

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文