reactjs 使用react在gridjs中自定义分页

wlsrxk51  于 2023-05-28  发布在  React
关注(0)|答案(1)|浏览(156)

我想用gridjs和react来做自定义分页。所以,我有1000条记录显示在表中。每页记录数为10。所以,我想在分页页脚显示如下-->
showing 1 to 10 of 1000 entriesPrev. 1 2 3 4 5 … 100 Next
我想向用户展示总共有1000条记录和100页。在一开始,UI将只获取第一页的10条记录。但是,一旦用户单击第二个页面,将获取下一组10条记录。
我可以在gridjs分页中设置限制,但不确定如何设置分页页脚摘要中需要的100页。
请救救我!Thanks!:)

3qpi33ja

3qpi33ja1#

在React中使用Grid.js分页通常是通过将server属性设置为true并使用处理程序函数来管理页面大小和当前页面来实现的。
让我们假设您的服务器接受分页的限制和偏移查询参数,并且您有一个名为/api/data的API端点。
首先,确保你已经安装了gridjs和gridjs-react包:

npm[ or yarn] install gridjs gridjs-react

然后,这里有一个例子,你可以在你的React组件中实现它,但请记住,根据你的应用程序需求,会有一些添加:

import { Grid, GridRow } from "gridjs-react";

const MyTable = () => {
  const [totalPages, setTotalPages] = useState(0);
  
  const gridInstance = new gridjs.Grid({
    server: {
      url: '/api/data',
      method: 'GET',
      // beforeRequest hook allows you to manipulate the request parameters
      beforeRequest: (params) => {
        return {
          ...params,
          limit: params.limit,
          offset: params.offset,
        };
      },
      // afterRequest hook allows you to manipulate the response
      afterRequest: (data) => {
        setTotalPages(Math.ceil(data.total / data.limit));
        return data;
      },
      then: data => ({
        data: data.items,
        total: data.total,
      }),
      handle: (res) => {
        if (res.ok) {
          return res.json();
        }
        throw Error("Network error");
      },
    },
    pagination: {
      enabled: true,
      limit: 10,
      summary: (_, total) => `Showing ${total} entries`,
    },
  }).render();

  return (
    <div>
      <GridRow>
        <p>
          Showing 1 to 10 of {totalPages} entries 
          Prev. 1 2 3 4 5 … 100 Next
        </p>
      </GridRow>
      {gridInstance}
    </div>
  );
}

export default MyTable;

服务器中的beforeRequest钩子允许我们修改请求参数。因此,在本例中,我们使用Grid.js请求中的limit和offset值,并将它们发送到我们的服务器。
afterRequest钩子用于获取总页数并将其设置为状态。请注意,在本例中,我们假设服务器以项目总数(total)和当前页面的项目(items)作为响应。
最后,我们使用分页选项来启用分页,并将页面大小设置为10。我们通过提供一个summary函数来自定义分页摘要文本。此函数接收当前页的数据和数据总数,并返回将在分页摘要中显示的字符串。
注意:如果您想显示自定义分页(如Prev.一二三四五... 100 Next),您可能必须创建自己的自定义分页组件。Grid.js没有提供一个内置的方法来定制除了摘要之外的分页控件的外观。

相关问题