如何实现带有分页功能的React表(附代码示例)

441 阅读2分钟

在本教程中,我想告诉你如何使用React表库及其usePagination插件来实现分页。在前面的例子中,你安装了React表库来创建一个表组件。现在,你将使你的用户能够在表中对页面进行分页

首先,导入usePagination钩子:

import { usePagination } from '@table-library/react-table-library/pagination';

第二,用表的数据初始化它,加上一个初始的页码和页面大小,并把它作为一个插件道具传递给表组件:

const App = () => {
  const data = { nodes: list };

  const pagination = usePagination(data, {
    state: {
      page: 0,
      size: 2,
    },
  });

  return (
    <Table data={data} pagination={pagination}>
      ...
    </Table>
  );
};

第三,创建你的分页组件(或像本例中的内联HTML元素),并通过从其分页状态读取和用其函数写入分页状态,以编程方式与分页功能进行交互。

const App = () => {
  const data = { nodes: list };

  const pagination = usePagination(data, {
    state: {
      page: 0,
      size: 2,
    },
  });

  return (
    <>
      <Table data={data} pagination={pagination}>
        ...
      </Table>

      <div
        style={{ display: 'flex', justifyContent: 'space-between' }}
      >
        <span>
          Total Pages: {pagination.state.getTotalPages(data.nodes)}
        </span>

        <span>
          Page:{' '}
          {pagination.state.getPages(data.nodes).map((_, index) => (
            <button
              key={index}
              type="button"
              style={{
                fontWeight:
                  pagination.state.page === index
                    ? 'bold'
                    : 'normal',
              }}
              onClick={() => pagination.fns.onSetPage(index)}
            >
              {index + 1}
            </button>
          ))}
        </span>
      </div>
    </>
  );
};

这就是了。只用了几行,你就在表中实现了分页功能。现在让我们创建一个通知器,从表中获取页面。让我们看看它是如何通过usePagination钩子工作的:

const App = () => {
  const data = { nodes: list };

  const pagination = usePagination(data, {
    state: {
      page: 0,
      size: 2,
    },
    onChange: onPaginationChange,
  });

  function onPaginationChange(action, state) {
    console.log(action, state);
  }

  ...
};

onChange回调函数使你能够访问触发分页变化的动作和你的表的当前分页状态(在这个例子中,它的页码和页面大小)。有了对这些信息的访问,你就可以在此基础上进一步触发表或非表事件(例如,服务器端分页等副作用)。

此外,值得注意的是,你传递给表的分页对象被打包了分页状态--这使你有能力在任何时候访问它--以及所有以编程方式分页的函数。

你只看到了该表的一个可能的分页版本。由于你可以完全访问分页状态和它的函数,你也可以创建你自己的版本。在文档中找到更多的分页例子。