[React+Tailwind] Flowbite で Pagination を表示してみる | 心を無にして始める React

準備

Flowbite が使えるプロジェクトを準備します。

Pagination コンポーネントをつくる

./src/components 配下に Pagination.js を作ります。

import React, { forwardRef } from 'react';
import {
  Pagination as FlowbitePagination,
} from 'flowbite-react';

const Pagination = forwardRef((
  {
    children,
    currentPage,
    layout = 'pagination',
    onPageChange,
    showIcons = true,
    totalPages,
    ...otherProps
  },
  ref,
) => {
  return (
    <FlowbitePagination
      currentPage={currentPage}
      layout={layout}
      onPageChange={onPageChange}
      showIcons={showIcons}
      totalPages={totalPages}
      ref={ref}
      {...otherProps}
    >
      {children}
    </FlowbitePagination>
  );
})

export default Pagination;

Pagination コンポーネントをつかう

いつものように App.js を編集していきます。

import { useState } from 'react';
import './App.css';
import Pagination from './components/Pagination';

function App() {
  const [currentPage, setCurrentPage] = useState(1);

  const onPageChange = (page) => {
    setCurrentPage(page)
  }

  return (
    <div className="min-h-screen gap-4 flex flex-col justify-center items-center dark:text-white dark:!bg-gray-900">
      <Pagination
        currentPage={currentPage}
        layout="pagination"
        onPageChange={onPageChange}
        showIcons={true}
        totalPages={1000}
      />
      <Pagination
        currentPage={currentPage}
        layout="table"
        onPageChange={onPageChange}
        showIcons={true}
        totalPages={1000}
      />
      <Pagination
        currentPage={currentPage}
        layout="navigation"
        onPageChange={onPageChange}
        showIcons={true}
        totalPages={1000}
      />
    </div>
  );
}

export default App;

結果

はい、できました。